class player{
public:
int a;
}
int main(){
player p1;
p1.a=10;
}
我创建了一个播放器的引用变量p1但不是堆上的实际对象,因为我没有在p1上使用new关键字。但是,c ++编译器允许我将值10赋给p1的数据成员'a'。如果没有堆上的对象,这怎么可能呢?
答案 0 :(得分:4)
您将C ++与Java混淆。 p1
不是参考,它只是一个具有自动存储持续时间的对象。它是在变量的范围开始时创建的,并且当变量的范围结束时它被销毁。
在C ++中,通常只使用" heap" (如果您需要对对象的生命周期进行更复杂的控制,那么正确的话就是:免费商店)。
如果您不需要此特殊控件,那么C ++中的对象就像是int
或double
一样。写下new int
或new double
你是不是觉得有必要,是吗?好吧,在C ++中,player
在这方面就像int
或double
。这是几乎所有其他流行编程语言的主要区别。