【发布时间】:2015-05-17 04:14:12
【问题描述】:
所以我有这门课
class Obj{ //simple class with constructor + destructor
public:
Obj(){cout<<"Obj1 has been created"<<endl;}
~Obj(){cout<<"Obj1 has been destroyed"<<endl;}
};
Obj * buffer[10]; //buffer
int main(int argc, char *argv[])
{
Obj * c = new(&buffer[0]) Obj;
delete &buffer[0];
system("PAUSE");
return EXIT_SUCCESS;
}
这种使用“新”展示位置的方法是否有效?因为当我尝试删除地址时,没有调用析构函数。
但是如果我使用这行代码,就会调用析构函数
Obj * c = new(&buffer[0]) Obj;
delete c;
谁能告诉我发生了什么?我真的必须删除指针才能调用析构函数吗?
【问题讨论】:
标签: c++