我今天注意到在示例代码中:
void print(unsigned short a) {
std::cout << a << std::endl;
}
初始化和使用是这样的:
print(short (5));
但不是这样:
print(unsigned short(6));
main.cpp:16:8:错误:“无符号”打印之前的预期主表达式(无符号短(6));
这与类型无关,因为这也有效:
typedef unsigned short ushort;
print(ushort (6));
所以我去寻找标准关于值初始化的内容。结果什么都没有:
值初始化的效果是:
1)如果 T 是一个类类型......
2)如果 T 是非联合类类型......
2)如果 T 是类类型......
3) 如果 T 是数组类型,..
4)否则,对象被零初始化。
为便于阅读而进行的修改。 原始来源。
POD类型的值初始化有哪些规则?unsigned
限定类型无法进行值初始化的原因是什么?这是否与他们的事实有关rvalues
?