在C ++中实例化类的最常用方法是什么? [重复]

问题描述 投票:1回答:2
我一直在研究C ++中的OOP,通过使用

new关键字或标准方法(不使用new),有不同的实例化类的方法。

要么使用

new

Class *object = new Class();
或使用标准方式

Class object;

我对何时使用这两种方法感到困惑。有人可以说明何时使用或哪种实例化方法是首选的吗?
c++ oop instantiation
2个回答
0
投票
在此:

Object* o = new Object

您正在创建动态分配,并且o是指针。通常用于引用或作为列表和树的实现来节省内存。必须使用

delete删除指针的内存,因为一旦超出范围,该对象仍将存在,但您将无权访问,这称为内存泄漏。

在另一个声明中

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

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

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

所以回答您的问题的首选方法取决于您,但通常您会希望使用不带新版本的版本。


0
投票

new关键字用于动态分配内存。通过使用new关键字,如果有足够的可用内存,它将初始化堆中的内存并返回地址。然后,您有责任使用delete

释放内存。否则,如果不使用new运算符,则超出范围时将自动销毁该对象。
© www.soinside.com 2019 - 2024. All rights reserved.