C ++堆对象有堆栈还是堆成员?

时间:2017-07-30 21:33:20

标签: c++ class 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;
}

我猜测第二个也被认为是在堆上,在这种情况下它也使释放更容易,但我希望有人可以确认。

1 个答案:

答案 0 :(得分:0)

  

如果我在堆上分配一个新对象,那么在对象的类中定义的所有变量是否也在堆上?