假设我有以下课程:
class A
{
public:
A() {}
};
我需要声明一个类A
的全局实例(规范要求),哪个更好?
A a; // is the constructor even called here?
或
A* pa; // and allocate later a new instance
提前致谢
答案 0 :(得分:1)
“A a; - 构造函数甚至在这里被称为?” - 是的,调用构造函数。
“* pa; - 稍后再分配一个新实例” - 如果你在使用它之前实际为这个指针变量赋值,那么它可以工作。但是你呢?
总的来说,我认为对全局变量的需求表明了设计中的一个缺陷。但是如果你真的需要它们,那么在使用它们之前确保它们已经构建好。
答案 1 :(得分:0)
如果使用A a
,则不需要释放分配给a的内存。当main()函数退出时,将自动调用A的析构函数。
如果使用A *pa
,理想情况下应该在代码中的delete pa
处明确删除pa,并且应该注意在删除后不使用pa
。< / p>