在这里插入代码片 Complex *pc=new Complex(1,2);//调用普通new //编译器转为如下 Complex *pc; try{ void* mem=operator new(sizeof(Complex));//调用operator new(size_t size) pc=static_cast<Complex*>mem; pc->Complex::Complex(1,2);//自己使用时会报错,只有编译器才可直接使用 }catch(std::bad_alloc){ //若执行失败则不执行constructor }
void *ptr=::operator new(size_t size);
代码逻辑如下
形式不同,见下图
下图通过指针直接调用析构函数可以运作,但上面调用构造函数不可以