我们使用default
关键字可以为函数指定一个默认的实现。这就是C++11中defaulted function
的用法。在下面的例子中,person
类没有写出其构造函数和析构函数,而是显式地强制编译器自动生成默认构造函数和析构函数。
1
2
3
4
5
class person {
public:
person(void) = default;
virtual ~person(void) = default;
};
与defaulted function
相对应的就是deleted function
。deleted function
允许我们通过指定delete
关键字来移除一个函数的实现。在C++中,如果我们想移除一个类的拷贝构造函数,delete
关键字对我们是很有用的。在下面的例子中,你可以看到,我们关闭了person
类的拷贝构造函数和赋值操作符(即禁止编译器自动生成默认拷贝构造函数和赋值操作符),以便移除该类对拷贝操作的支持。
1
2
3
4
5
6
7
8
class person {
public:
person(void) = default;
person(const person&) = delete;
virtual ~person(void) = default;
person& operator =(const person&) = delete;
};
这就是C++11的两个特征,简单而有效。