default initialization
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
默认的初始值提供了一个新的对象.
原文:
Provides the default initial value to a new object.
目录 |
[编辑] 语法
T object ;
|
(1) | ||||||||
new T ;
|
(2) | ||||||||
[编辑] 解释
缺省的初始化是在三种情况下进行:
原文:
Default initialization is performed in three situations:
1)
当声明一个变量,自动存储时间没有初始化
原文:
when a variable with automatic storage duration is declared with no initializer
2)
创建一个新的表达没有初始化一个对象时,与动态存储时间的
原文:
when an object with dynamic storage duration is created by a new-expression without an initializer
3)
默认初始化的效果是:1
原文:
The effects of default initialization are:
-
T
如果是一个数组类型的数组,每个元素默认初始化.原文:IfT
is an array type, every element of the array is default-initialized.
- 否则,什么也不做.....
如果
T
是一个const限定的类型,它必须是一个用户提供的默认构造函数的类类型.原文:
If
T
is a const-qualified type, it must be a class type with a user-provided default constructor.[编辑] 注释
非类变量,自动和动态存储时间的默认初始化的对象不确定的值(静态和区域设置线程对象得到初始化为零),
原文:
Default initialization of non-class variables with automatic and dynamic storage duration produces objects with indeterminate values (static and thread-locale objects get 初始化为零)
参考不能默认初始化.
原文:
Reference cannot be default-initialized.
[编辑] 示例
#include <string> struct T1 {}; class T2 { int mem; public: T2() {} // "mem" not in initializer list }; int n; // This is not default-initialization, the value is zero. int main() { int n; // non-class: the value is undeterminate std::string s; // calls default ctor, the value is "" (empty string) std::string a[2]; // calls default ctor, creates two empty strings // int& r; // error: default-initializing a reference // const int n; // error: const non-class type // const T1 nd; // error: const class type with implicit ctor T1 t1; // ok, calls implicit default ctor const T2 t2; // ok, calls the user-provided default ctor // t2.mem is default-initialized }