c++ - Object var 和 Object* var = new Object() 的区别

标签 c++

如果我有一个名为 Object 的类,那么创建一个这样的实例有什么区别:

Object var;

和:

Object* var = new Object();

?

最佳答案

此处您在堆栈上创建了 var:

Object var;

所以在上面,var 是实际的对象。


此处您在堆上创建 var(也称为动态分配):

Object* var = new Object()

在堆上创建对象时,必须在使用完后对其调用delete。此外,var 实际上是一个指针,它保存着类型为Object 的对象的内存地址。在内存地址存在实际对象。


更多信息:See my answer here on what and where are the stack and heap .

关于c++ - Object var 和 Object* var = new Object() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3053851/

相关文章:

c++ - 对 `vtable 的 undefined reference (最小示例)

c++ - 在静态上使用未命名的命名空间

c++ - 较高 n 值的段错误(例如 n=999997)

c++ - 在没有额外代码的情况下链接两个独立类的最通用方法是什么?

c++ - 使用打印不同范围的 3 个线程按排序顺序打印数字

c++ - 如何按类型启用 protected 方法

c++ - 使用 GDB 编译时打印所有包含内容

c++ - 获取 Qt 对象的大小

c++ - 我是否需要遍历两个子树进行计算,从根到叶的总和,到给定值?

c++ - delete[] 运算符的参数可以指向数组的非第一个元素吗?