当一个对象被实例化时,成员变量会发生什么?这些是台阶吗?
成员变量的空间在instantiated
这就是成员变量发生的情况吗?
发布于 2022-07-06 15:31:12
也许最好用一个例子来解释:
class Y
{
public:
Y(int value) {...}
};
class X
{
public:
X(int value1, value2): member1(value1), member2(value2) {......}
Y member1, member2;
};
int main()
{
auto object = new X(3, 4);
}
执行从main
开始。new
为class X
的一个实例分配空间,其中包括两个class Y
实例的空间。然后,main
使用一个隐藏参数(指向此分配内存的指针)和两个整数参数调用构造函数X::X
。此构造函数为每个成员调用构造函数Y::Y
两次。然后执行X::X
的主体(在我的示例中包含......
)。
每次Y::Y
构造函数退出时,class X
的对应成员都被初始化和构造(形式上,它的启动)。
当X::X
构造函数退出时,将初始化和构造object
(其生存期开始)。
https://stackoverflow.com/questions/72885601
复制相似问题