仅在堆中创建C对象
发布时间:2020-12-16 10:14:52 所属栏目:百科 来源:网络整理
导读: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;} 我想只在堆中创建对象(也就是说只通过new),所以我将默认的析构函数设置为private.
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; } 我想只在堆中创建对象(也就是说只通过new),所以我将默认的析构函数设置为private.但是,当我使用新的A()只创建一个对象时它起作用,当我使用新的A [5]时它不起作用.为什么?我很迷惑.非常感谢! 解决方法
执行新A [5]涉及的步骤是:
>分配所需的内存量. 如果在上面的第二步中抛出异常,则需要实现: >在已初始化的所有对象上调用析构函数. 因此,new []实现需要能够访问类的析构函数. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |