【发布时间】:2014-12-13 21:32:52
【问题描述】:
c++/c++11 中的bool()、int() 和double() 是什么?它们是 c++ 或 c++11 标准中的 true、0 和 0.0 吗?
【问题讨论】:
-
其实分别是
false、0和0.0。
c++/c++11 中的bool()、int() 和double() 是什么?它们是 c++ 或 c++11 标准中的 true、0 和 0.0 吗?
【问题讨论】:
false、0和0.0。
T() 是一个 T 类型的值初始化纯右值,因为 C++03 引入了值初始化。
false 表示 bool,0 表示算术,nullptr 表示指针类型。
【讨论】:
引用 C++11 FD,[expr.type.conv]/2:
表达式
T(),其中T是一个简单类型说明符或 typename-specifier 用于非数组完整对象类型或 (可能是 cv-qualified)void类型,创建指定的纯右值 类型,其值是由值初始化(8.5)产生的T类型的对象;void()的情况没有进行初始化。
值初始化意味着对标量进行零初始化。
【讨论】: