Gor*_*don 3 c++ heap stack class
class A
{
public:
A() { printf("constructor"); };
private:
~A() {};
};
int main(int argc, char** argv[])
{
void *p = new A(); //ok
void *p = new A[5]; //error
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我想只在堆中创建对象(也就是说只通过new),所以我将默认的析构函数设置为private.但是,它在我new A()用来创建一个对象时起作用,当我使用时它不起作用new A[5].为什么?我很迷惑.非常感谢!
执行涉及的步骤new A[5]是:
如果在上面的第二步中抛出异常,则需要实现:
因此,new []实现需要能够访问类的析构函数.