C++堆对象具有堆栈或堆成员?
C++ Heap Object has Stack or Heap Members?
如果我在堆上分配一个新对象,那么在对象的类中定义的所有变量是否也在堆上?
例如,假设我有一个 Node 类,该类在一个名为 _pos 的数组中保存了一个 x、y、z 坐标。为了用户创建许多 Node 对象,Node 在堆上声明为:
Node n = new Node(0, 0, 0);
我是否也应该将堆上的位置数组声明为:
class Node {
public:
Node(double x, double y, double z) {
_pos = new double[3] {x, y, z};
}
private:
double* _pos;
}
或者堆上已经考虑了_pos数组,以下内容也可以
class Node {
public:
Node(double x, double y, double z) {
_pos = double[3] {x, y, z};
}
private:
double* _pos;
}
我猜第二个也在堆上考虑,在这种情况下,它也使分配更容易一些,但我希望有人可以确认。
如果我在堆上分配一个新对象,那么在对象的类中定义的所有变量是否也在堆上?
是的。
相关文章:
- C++类成员:堆栈与堆分配
- "new"创建的实例的所有成员变量是否都存在于堆上而不是堆栈上?
- 在C++中使用链表的堆栈实现中,访问结构体headNode成员count和top会导致运行时错误
- C++ 中类成员的堆栈的 pop() 函数
- 局部堆栈变量成员的返回值优化
- C++堆对象具有堆栈或堆成员?
- 复制堆栈上的成员值或使用指针访问它?
- 在使用 In Order 遍历成员函数时引发异常(堆栈溢出)时出现问题
- 何时在堆与堆栈上具有类成员
- 返回可能在C++中分配在堆栈上的成员时,最佳指针/引用类型是什么
- 使用 STL 堆栈作为C++类的成员
- 当对象包含指针成员时,堆栈上的对象销毁出现分段错误
- 成员对象为unique_ptr或在堆栈上
- 如果我将堆栈上分配的元素的指针推入 std::vector,则其成员的值会发生变化
- C++ 使用单个输入字节文件的不同部分实例化堆栈上的成员类
- 在堆或堆栈上的指针类实例中分配C++非指针数据成员
- 成员函数内存分配堆栈或堆
- 将没有成员的函子设置为类成员对象还是堆栈对象更有效
- 常量成员堆栈与堆
- 堆栈上有成员的向量