'value initializing'某事是什么意思?
What does 'value initializing' something mean?
可能重复:
以下短语在C++中是什么意思:零初始化、默认初始化和值初始化?
例如,如果我有一个类:
class Info
{
int x;
int y;
};
我用来创建一个对象
Info *p = new Info();
Info旁边的括号是否意味着我正在初始化它?它和这个有什么不同,Info *p = new Info;
?
我知道在新旧C++语言中有一个区别不同含义的问题,但我想知道默认初始化和值初始化之间的语义差异。例如,值初始化是否意味着将某个东西初始化为零?
声明的变量可以是零初始化、值初始化认初始化。
在您的示例中:
Info *p = new Info(); <------- Value Initialization
Info *p = new Info; <------- Default Initialization
C++03标准8.5/5恰当地定义了每一个:
零初始化类型为T的对象意味着:
--如果T是标量类型(3.9),则将对象设置为转换为T的值0(零)
--如果T是非并集类类型,则每个非静态数据成员和每个基类子对象
初始化为零
--如果T是并集类型,则对象的第一个命名数据成员初始化为零
--如果T是数组类型,则每个元素被零初始化
--如果T是引用类型,则不执行初始化。
默认初始化类型为T的对象意味着:
--如果T是非POD类类型(子句9),则调用T的默认构造函数(并且如果T没有可访问的默认构造函数,则初始化是格式错误的)
--如果T是数组类型,则默认初始化每个元素
--否则,对象初始化为零。
值初始化类型为T的对象意味着:
--如果T是具有用户声明构造函数(12.1)的类类型(第9条),则默认调用了T的构造函数(如果T没有可访问的,则初始化格式不正确默认构造函数)
--如果T是一个没有用户声明构造函数的非并集类类型,则每个非静态对T的数据成员和基类组件进行值初始化
--如果T是数组类型,则每个元素都被值初始化
--否则,对象为零初始化
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 当我们说在执行程序时将操作系统的控制权传递给main()函数时,我们的意思是什么
- 这句话在c++中的意思是什么
- 这个typedef的意思是什么
- 这句话的意思是什么
- 意思是什么
- 这个句法的意思是什么?