- 本文介绍一些C++的两个新特性,它们虽然微小,但对你的编程十分重要
一、新的数据类型
- C++11添加的新的数据类型如下:
- char16_t、char32_t
- long long、unsigned long long
- std::nullptr_t(下面详细介绍)
二、Template表达式内的空格
- C++11标准之前建议在“在两个template表达式的闭符之间放一个空格”的要求已经过时了
- 例如:
-
vector<
list<
int> >;
//C++11之前
-
-
vector<
list<
int>>;
//C++11
三、nullptr
- C++11允许你使用nullptr取代0或NULL,用来表示一个pointer(指针)指向所谓的no value
- nullptr会被自动转换为各种pointer类型,但是不会被转换为任何证书类型
演示案例
void f(int); void f(void*); f( 0); //调用f(int) f( NULL); //如果NULL被视为0,那么调用的是f(int),可能与你的预期不符 f( nullptr); //调用f(void*)
- 下面是在VS 2015上面的运行结果
三、std::nullptr_t
- std::nullptr_t是一种基础数据类型,定义于<sctddef>中
- std::nullptr_t定义的变量必须初始化
- nullptr属于一种常量,它是属于std::nullptr_t数据类型的
演示案例
void f(int) { std:: cout << "int" << std:: endl; } void f(void*) { std:: cout << "void*" << std:: endl; } void f(std::nullptr_t) { std:: cout << "std::nullptr_t" << std:: endl; } int main() { f( 0); f( NULL); f( nullptr); //必须初始化 std:: nullptr_t t = nullptr; f(t); return 0; }
转载:https://blog.csdn.net/qq_41453285/article/details/104946204
查看评论