C++11 =default,=delete
1. 简介
=default 和 =delete 大部分情况下是用在构造函数(ctor)、析构函数、拷贝构造和拷贝赋值函数(这四种函数被称为 Big-Three)中。
如果自己已经有定义了一个 ctor ,那么编译器就不会在给你一个 default ctor。如果你强制加上 =default,就可以重新获得并使用 default ctor。default ctor 就是编译器给的默认的构造函数。如果你没有显式写出构造函数,我们常说有默认的构造函数,其实指的就是这一个。
单纯的 default ctor 没什么用,只是一个空函数,因为编译器不知道你要做什么。但如果有继承关系的话,这个 default ctor 就很有用。因为如果这个类是有继承其他父类的话,且 ctor 是 default ctor 的话,当调用到该类时,如果使用的是 default ctor ,这个 default ctor 里面会帮你调用父类的 ctor。也就是编译器背后会给你加上代码。
··
Big-Three 加上右值引用的构造函数和它的拷贝赋值就是 Big-Five。
2. 示例
如果有一个类 Foo,类中有一个成员变量 _i。
Foo(int i)