如果我在堆上分配一个新对象,那么在对象的类中定义的所有变量是否也在堆上?
例如,假设我有一个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;
}
我猜测第二个也被认为是在堆上,在这种情况下它也使释放更容易,但我希望有人可以确认。
答案 0 :(得分:0)
如果我在堆上分配一个新对象,那么在对象的类中定义的所有变量是否也在堆上?
是