gpt4 book ai didi

c++ - 初始化列表是在默认构造函数之前还是之后调用的?

转载 作者:行者123 更新时间:2023-11-30 01:14:29 25 4
gpt4 key购买 nike

<分区>

假设我有一个类Alpha,它有两个成员变量betagamma,它们是类Beta的对象Gamma 分别为:

class Alpha
{
public:
Beta beta_;
Gamma gamma_;
};

现在,类 Gamma 本身有一个成员变量 p_beta,它是指向 Alpha 中相同的 beta 变量的指针。但是,Gamma 没有默认构造函数,而是必须通过传递 p_beta 来构造它:

class Gamma
{
public:
Beta* p_beta_;
Gamma(Beta* p_beta)
{
p_beta_ = p_beta;
}
};

那么,如果我想创建一个Alpha类的对象alpha,我需要在初始化列表中构造它的成员gamma_ Alpha,假设 Gamma 没有默认构造函数:

class Alpha
{
public:
Beta beta_;
Gamma gamma_;
Alpha() : gamma_(&beta_){}
};

我的问题是:beta_ 是否已经在此初始化列表中构造 gamma_ 时创建?我本以为在创建任何其他成员变量之前调用初始化列表,在这种情况下 beta_ 将不存在。如果那时还没有创建beta_,那么如何在构造gamma_时传递一个指向beta_的指针呢?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com