当对象不使用 new 关键字但父对象在堆中时,对象是否存储在堆栈或堆中
Do objects iniside objects get stored in the stack or heap when it does not use the new keyword but the parent object is in the heap?
基本上,如果我有类A
,类A在不使用new
的情况下保存类B
的实例,并且我使用new
创建类A
的实例。类A
内的类B
实例是否存储在堆栈或堆中?
B
是A
的一部分。因此,无论A
存储在何处(无论是堆栈、堆还是其他什么),也就是说,根据定义,存储B
的位置。
使用 new 关键字时,会在堆上创建一个对象。如果没有 new 关键字,它将在堆栈上创建。
详细地说,类 A 的对象是使用 new 关键字创建的,该关键字返回指针。类 A 的对象在堆上创建,指向它的指针在堆栈上。现在,在类 A 的对象中,您正在创建类 B 的对象,而不使用 new 关键字。如果类 B 的对象位于函数内部,则它存储在堆栈中。否则,如果对象 B 是在类范围内声明的,那么它将在堆上。
相关文章:
- C++ 在堆栈中包含多态属性的类对象存储
- 将对象存储为其基本虚拟类
- 将大型对象存储在无序映射中是否效率低下
- C++:将未知类型的对象存储为成员变量的类
- 按unique_pointer将传递的对象存储在地图中
- 如何将 c++ 类对象存储为数组?
- 将对象存储在 std::map 中
- 是否存在对象存储在其生存期内可能会更改的情况?
- 将不同类型的对象存储在容器中
- 将自定义可绘制对象存储在数组中会导致绘制时出现分割错误
- 我将如何在C++中文件处理对象(存储/导入)
- 将对象存储在C 中的2维Sprite矩阵中
- 将抽象派生类对象存储在基类向量中
- 将任意函数对象存储到类成员容器中,而无需知道其声明签名
- 如何使用向量将类对象存储在超载操作员中
- 适当的方法将对象存储在Std矢量中
- 将向量对象存储在共享指针投掷错误中
- 将多态对象存储在unordered_set中
- 为什么我可以将对象存储在大小不同的数组中
- 返回对象存储在哪里