1.新的类功能
(1)特殊的成员函数
*在原有4个特殊成员函数(默认构造函数,复制构造函数,复制赋值运算符和析构函数)的基础上,C++11新增了两个:移动构造函数,移动赋值运算符。这些成员函数式编译器在各种情况下自动提供的。
*如果类定义了移动构造函数或移动赋值运算符,编译器将不会自动提供复制构造函数和复制赋值运算符
*如果类定义了造函数,复制构造函数或析构函数,编译器将不会自动提供移动构造函数和移动赋值运算符
(2)默认的方法和禁用的方法
*由于某种原因,编译器不会自动提供某些方法。例如,类定义了移动构造函数,编译器将不会自动创建默认的构造函数,复制构造函数和复制赋值构造函数。这时,可以用default关键字显示地声明这些方法的默认版本
*default关键字只能用于6个特殊的成员函数
Example:
class A
public:
A() = default;
A(int i):x(i)
{
}
};
int main()
{
A a;//ok
(3)关键字delete可以禁止编译器使用特定方法
(1)特殊的成员函数
*在原有4个特殊成员函数(默认构造函数,复制构造函数,复制赋值运算符和析构函数)的基础上,C++11新增了两个:移动构造函数,移动赋值运算符。这些成员函数式编译器在各种情况下自动提供的。
*如果类定义了移动构造函数或移动赋值运算符,编译器将不会自动提供复制构造函数和复制赋值运算符
*如果类定义了造函数,复制构造函数或析构函数,编译器将不会自动提供移动构造函数和移动赋值运算符
(2)默认的方法和禁用的方法
*由于某种原因,编译器不会自动提供某些方法。例如,类定义了移动构造函数,编译器将不会自动创建默认的构造函数,复制构造函数和复制赋值构造函数。这时,可以用default关键字显示地声明这些方法的默认版本
*default关键字只能用于6个特殊的成员函数
Example:
class A
{
private:
int x;public:
A() = default;
A(int i):x(i)
{
}
};
int main()
{
A a;//ok
return 0;
}(3)关键字delete可以禁止编译器使用特定方法
*delete可用于任何成员函数
<