首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >零初始化忽略构造函数

零初始化忽略构造函数
EN

Stack Overflow用户
提问于 2021-01-26 06:33:38
回答 1查看 151关注 0票数 0

讨论了零初始化之后,我想澄清这两段零初始化CPP引用同时发生的情况:

  1. 作为值初始化序列的一部分,对于非类类型和没有构造函数的值初始化类类型的成员,包括未为其提供初始化器的聚合元素的值初始化。

从这一段中我了解到,类成员必须具有,而不是构造函数

如果T是一个非并类类型,那么所有基类和非静态数据成员都是零初始化的,并且所有填充被初始化为零位。如果存在,则忽略constructors,。

但从这一点我了解到,类成员的构造函数(如果有的话)(他们应该没有)被忽略了

然后,在这种情况下,我可以为类成员定义构造函数,而仍然忽略它的构造函数?我用这两个类AB做了一个实验,并构造了A{}调用B() (显然是因为c=1 )。只有B() = default;才能制造c=0

代码语言:javascript
运行
复制
class B
{
public:
    B() : c{1} {}
    int c;
};

class A
{
public:
    A() = default;
    B b;
};

有可能吗?提前谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 06:44:24

然后,在这种情况下,我可以为类成员定义构造函数,但仍然忽略它的构造函数?

静态存储在静态初始化阶段,具有静态存储持续时间的类实例将为零初始化,这将忽略构造函数(如果有的话)。稍后在动态初始化阶段调用构造函数。

你能举个例子吗?

下面是一个具有静态存储持续时间的类实例的示例:

代码语言:javascript
运行
复制
int main()
{
    static A a;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65896840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档