【发布时间】:2013-11-12 22:29:03
【问题描述】:
class A
{
public:
int get(void){return stuff;}
void set(int s){stuff = s;}
private:
int stuff;
};
int _tmain(int argc, _TCHAR* argv[])
{
A a;
A b();
A* ap = new A;
A* bp = new A();
}
我不知道 main() 中的四行之间究竟有什么区别,以及在哪些情况下我可能会使用其中的一个和另一个(除了在堆栈或堆上)。我注意到第四行实际上将“stuff”初始化为 0,而其他行没有。第二行似乎什么都没有,这似乎很奇怪。
问题:每行的权衡/含义是什么(在 main() 中)?是否使用括号让我感到困惑。
【问题讨论】:
-
不要使用
new。b不是对象。通过消除,唯一剩下的选项是a。 -
对于初学者,
A b();不构造对象。它是function declaration。 -
a是一个局部变量,当它超出范围时(在代码块的末尾)它将被“释放”,bp对象在其指针消失时仍然存在除非你明确删除它。
标签: c++ constructor