在 C++ 中实例化 class 的最首选方法是什么?

What is the most preffered way to instantiate a class in C++?

我一直在研究 C++ 中的 OOP,有不同的方法可以通过使用 new 关键字或标准方法(其中不使用 new)。

或者使用 new

Class *object = new Class();

或使用标准方式

Class object;

我对何时使用这两种方式感到困惑。有人可以澄清何时使用或哪种是首选的实例化方式吗?

在此:

Object* o = new Object

您正在创建一个动态分配,o 是一个指针。这通常用于通过引用或作为列表和树的实现来节省内存。必须使用 delete 删除指针的内存,因为一旦它超出范围,对象仍然存在但您将无法访问,这称为内存泄漏。

在其他声明中

Object o; // or Object o = Object()

您正在声明对象的实例,而不是指针。

指针包含对象的引用,而不是对象本身。

所以回答您的问题时,首选方式取决于您的情况,但通常您会希望使用没有新版本的版本。

new关键字用于动态分配内存。通过使用 new 关键字,如果有足够的可用内存,它会初始化堆中的内存和 return 地址。然后你有责任使用 delete 释放内存。

否则,如果不使用 new 运算符,则对象在超出范围时会自动销毁。