new 操作
- 先分配memory
- 再调用ctor
Complex* pc = new Complex(1,2);
被转换成3步:
(1)void* mem = operator new(sizeof(Complex)); //分配内存 operator new内部就是调用malloc()分配内存
(2)Complex* pc = static_cast<Complex*>(mem); //转型
(3)pc->Complex::Complex(1,2); //调用构造函数
delete 操作
- 先调用dtor(析构函数)
- 再释放内存
delete pc;
被转换成:
Complex::~Complex(pc); //调用析构函数
operator delete(pc); //释放内存 operator delete内部调用free