如何在不使用新关键字创建对象的情况下在引用上使用数据成员?

时间:2017-12-09 09:16:44

标签: c++ class new-operator

class player{
   public:
      int a;
}
int main(){
   player p1;
   p1.a=10;
}

我创建了一个播放器的引用变量p1但不是堆上的实际对象,因为我没有在p1上使用new关键字。但是,c ++编译器允许我将值10赋给p1的数据成员'a'。如果没有堆上的对象,这怎么可能呢?

1 个答案:

答案 0 :(得分:4)

您将C ++与Java混淆。 p1不是参考,它只是一个具有自动存储持续时间的对象。它是在变量的范围开始时创建的,并且当变量的范围结束时它被销毁。

在C ++中,通常只使用" heap" (如果您需要对对象的生命周期进行更复杂的控制,那么正确的话就是:免费商店)。

如果您不需要此特殊控件,那么C ++中的对象就像是intdouble一样。写下new intnew double你是不是觉得有必要,是吗?好吧,在C ++中,player在这方面就像intdouble。这是几乎所有其他流行编程语言的主要区别。