1
2
3
const std::vector<int> v(5); // declare a vector v
auto a = v[0]; // a will be type int because v[0] is an int
decltype(v[0]) b = 1; // b will be type const int&, which is the return type of std::vector<int>::operator[](size_type) const
一般来说,如果你需要一个变量,你要初始化式,使用自动。decltype更好当你需要的东西是不是一个变量的类型,像一个返回类型。
nullptr型
在C和C++以前的迭代,0作为常量整数作为空指针常量,这就是为什么下面的怪事发生:
1
2
int *p = 1; // illegal, can't assign an int to an int* variable
int *q = 0; // legal, 0 has a special meaning as a null pointer
C + + 11定义了一个新的保留标识符被称为nullptr(类型nullptr_t)不是整数,不能转换为整数(但奇怪的是,它可以被转换为布尔值false)。0保持向后兼容的目的,一个有效的零点常数。
枚举类型
(注:以下是尚未通过Visual Studio 2010的支持,但它足够简单跟随甚至没有尝试的例子自己)
在C + + 03,枚举类型安全的-他们不被视为整数,即使当枚举类型是不同的。考虑以下情况: