首页 > 后端开发 > C++ > C 的隐式默认构造函数是否初始化内置类型成员?

C 的隐式默认构造函数是否初始化内置类型成员?

Mary-Kate Olsen
发布: 2024-12-09 11:18:07
原创
443 人浏览过

Does C  's Implicit Default Constructor Initialize Built-in Type Members?

通过默认构造函数初始化内置类型

在 C 中,默认构造函数由编译器为执行以下操作的类隐式定义:没有显式声明的构造函数。这个隐式默认构造函数会自动初始化内置类型的成员吗?

回答

不会,隐式定义的默认构造函数不会初始化内置类型的成员。但是,需要注意的是,类实例可以通过其他方式初始化。

值初始化与默认构造函数

通常假定语法为 C()调用默认构造函数。但是,在某些情况下,它会执行值初始化。如果用户声明的默认构造函数不存在,就会发生这种情况。值初始化直接初始化每个类成员,导致内置类型零初始化。

例如:

class C {
public:
  int x;
};
登录后复制

如果没有定义用户声明的构造函数,C()将使用值初始化:

C c;
// c.x contains garbage
登录后复制

显式值初始化

使用 () 显式值初始化,如以下代码所示,将对 x 进行零初始化:

C c = C();
// c.x == 0

C *pc = new C();
// pc->x == 0
登录后复制

聚合初始化

聚合初始化也可以在不使用构造函数:

C c = {}; // C++98
C d{}; // C++11
// c.x == 0, d.x == 0
登录后复制

因此,虽然默认构造函数不会初始化内置成员类型,但 C 中存在替代初始化方法。

以上是C 的隐式默认构造函数是否初始化内置类型成员?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板