为了账号安全,请及时绑定邮箱和手机立即绑定

在C+中,以下短语意味着什么:零、默认和值初始化?

在C+中,以下短语意味着什么:零、默认和值初始化?

C++ C
眼眸繁星 2019-06-12 16:04:36
在C+中,以下短语意味着什么:零、默认和值初始化?在C+中,以下短语意味着什么:零初始化,默认初始化,以及值初始化C+开发人员应该知道些什么呢?
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

C+03标准8.5/5:

零初始化T型物体是指:
-如果T是标量类型(3.9),则将对象设置为转换为T的0(0)值;
-如果T是非并类型,则每个非静态数据成员和每个基类子对象都为零初始化;
-如果T是一个联合类型,则对象的第一个命名数据成员为零初始化;
-如果T是数组类型,则每个元素都为零初始化;
-如果T是引用类型,则不执行初始化。

默认初始化T型物体是指:
-如果T是非POD类型(第9条),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化不正确);
-如果T是数组类型,则每个元素都是默认初始化的;
-否则,对象将为零初始化。

值初始化T型物体是指:
-如果T是具有用户声明的构造函数(12.1)的类型(第9条),则调用T的默认构造函数(如果T没有可访问的默认构造函数,则初始化是错误的);
-如果T是一个没有用户声明的构造函数的非联合类型,那么T的每个非静态数据成员和基类组件都是值初始化的;
-如果T是数组类型,则每个元素都是值初始化的;
-否则,对象将为零初始化。

调用引用类型实体的默认初始化或值初始化的程序格式不正确.如果T是cv限定类型,则使用cv不限定的T版本来定义零初始化、默认初始化和值初始化.


查看完整回答
反对 回复 2019-06-12
  • 2 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信