笔记一
摘要
默认或者禁用
当我们定义了自己的带参数的构造函数时,编译器将不再生成默认的构造函数,如果此时想使用默认的构造函数,则必须显式地声明并定义不带参数的构造函数。在C++ 11中,我们可以使用default关键字来表明我们希望使用默认的构造函数。类似的,当我们不想外部使用编译器自动生成的构造函数或赋值函数时,我们一般需要将其声明成protected或private的。在C++ 11中,我们可以使用delete关键字来表明我们不希望编译器生成默认的构造函数或赋值函数
CPerson() = default; //CPerson的构造函数
CPerson(const CPerson &person) = delete;//CPerson的拷贝构造函数
nullptr
nullptr是C++ 11中新加的一个关键字,用于标识空指针。引入nullptr后,可以
解决某些函数重载时的二义性问题
但是在C++11中调用f(int),方法f(char *)调用方式:f(nullptr)。
类型别名
typedef int (addptr*)(int a,int b);
C++11中可以这样:using addptr = int (int,int);
初始化列表
在引入C++ 11之前,只有数组能使用初始化列表。在C++ 11中一下都是合法的:
1 int a{5};
2 char c{‘X’};
3 int p[5] = {1, 2,3, 4, 5};
4 vector vctTemp{1, 2, 3};
5 CPerson person{10, “Mike”};
6 int b = 5.3; // b赋值成5,发生了窄转换
7 int d{5.3}; // 会提示编译错误,避免了窄转换
map m_map = {{“test”,1},{“test2”,2}};//不需要构造键值对
vector test()
{
return{“1”,”2”,”3”};//列表初始化返回值
}
笔记二
摘要
__cplusplus