我已经在这里和这里看到了相关的答案,但我想要确认,因为它们都没有明确说明.
假设我有一个类Foo和一个bar类型的成员int*.
以下两个初始化完全相同吗?
Foo::Foo() : bar(NULL) // null pointer constant by macro
{
}
Foo::Foo() : bar() // value initialization
{
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*igt 10
指针的值初始化将其初始化为空指针值; 因此两个初始化列表都是等效的.
指针没有类或数组类型,因此它们的值初始化为零初始化.(8.5p8)
然后,(8.5p6)
到零初始化的类型的对象或参考
T指:
- 如果
T是标量类型(3.9),则将对象初始化为通过将整数文字0(零)转换为T
此整数文字0是一个空指针常量(4.10p1),当转换为指针类型时,会创建一个空指针值.
请注意,具有静态和线程持续时间(3.6.2)的变量的零初始化也会初始化指向空指针值的指针.
以上段落引用来自C++ 1y草案n3936,但它们在我检查的早期草稿中也是相同的.
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |