【发布时间】:2017-02-18 22:06:13
【问题描述】:
我想知道从构造函数(通过“new”关键字)创建的结构中的结构在哪里:它是在堆栈中还是在堆中? 假设我有这些定义来创建一个单链表:
struct Employee{
int code;
string name;
double wage;
};
struct Node {
Employee employee;
Node* next;
};
每当我创建一个指向 Node 的指针,然后将 new Node() 分配给它时,我知道我正在堆中创建一个 Node 对象,并且可以使用 -> 运算符取消引用它的字段。但是当我尝试访问内部结构的字段时,我需要使用点 (.) 运算符,例如:
Node* pointer = new Node();
pointer->employee.name="John Doe";
所以这让我想知道 Employee 对象是在堆栈还是堆内创建的。 基本上:当一个对象在堆中创建时,其成员变量中的所有内部对象也会在堆中创建吗?
谢谢!
【问题讨论】:
-
它位于外部对象所在的位置 IIRC。