在这和这讨论了零初始化之后,我想澄清这两段零初始化CPP引用同时发生的情况:
从这一段中我了解到,类成员必须具有,而不是构造函数。
如果T是一个非并类类型,那么所有基类和非静态数据成员都是零初始化的,并且所有填充被初始化为零位。如果存在,则忽略constructors,。
但从这一点我了解到,类成员的构造函数(如果有的话)(他们应该没有)被忽略了。
然后,在这种情况下,我可以为类成员定义构造函数,而仍然忽略它的构造函数?我用这两个类A和B做了一个实验,并构造了A{}调用B() (显然是因为c=1 )。只有B() = default;才能制造c=0。
class B
{
public:
B() : c{1} {}
int c;
};
class A
{
public:
A() = default;
B b;
};有可能吗?提前谢谢你。
发布于 2021-01-26 06:44:24
然后,在这种情况下,我可以为类成员定义构造函数,但仍然忽略它的构造函数?
静态存储在静态初始化阶段,具有静态存储持续时间的类实例将为零初始化,这将忽略构造函数(如果有的话)。稍后在动态初始化阶段调用构造函数。
你能举个例子吗?
下面是一个具有静态存储持续时间的类实例的示例:
int main()
{
static A a;
}https://stackoverflow.com/questions/65896840
复制相似问题