c ++:新的Object()和Object()之间有什么区别

kam*_*lot 1 c++ oop class object new-operator

所以在C++中你可以使用new关键字实例化对象,否则......

Object o = new Object();
Run Code Online (Sandbox Code Playgroud)

但你也可以这样做

Object o = Object();
Run Code Online (Sandbox Code Playgroud)

b/w两者究竟有什么区别,为什么我会使用另一个呢?

Qua*_*nic 14

你不能这样做Object o = new Object();new运营商返回一个指针类型.它必须是Object* o = new Object();Object实例将在堆上.

Object o = Object()Object堆栈上创建一个实例.我的C++很生疏,但我相信即使这个天真看起来像一个创建后跟一个赋值,它实际上只是一个构造函数调用.

  • 从技术上讲,对象不必位于堆栈上,它取决于使用它的上下文(即它可以是动态分配的对象的成员)。使用术语“堆栈/堆”非常类似于Java,与C ++无关。第一个版本返回一个指向“动态存储持续时间”对象的指针,第二个版本创建一个临时对象并将其分配给“自动存储持续时间”对象。 (2认同)