全局类变量与c ++中的指针

时间:2017-01-19 22:31:26

标签: c++

假设我有以下课程:

class A
{
public:
    A() {}
};

我需要声明一个类A的全局实例(规范要求),哪个更好?

A a; // is the constructor even called here?

A* pa; // and allocate later a new instance

提前致谢

2 个答案:

答案 0 :(得分:1)

“A a; - 构造函数甚至在这里被称为?” - 是的,调用构造函数。

“* pa; - 稍后再分配一个新实例” - 如果你在使用它之前实际为这个指针变量赋值,那么它可以工作。但是你呢?

总的来说,我认为对全局变量的需求表明了设计中的一个缺陷。但是如果你真的需要它们,那么在使用它们之前确保它们已经构建好。

答案 1 :(得分:0)

如果使用A a,则不需要释放分配给a的内存。当main()函数退出时,将自动调用A的析构函数。

如果使用A *pa,理想情况下应该在代码中的delete pa处明确删除pa,并且应该注意在删除后不使用pa。< / p>