北冥有鱼 记录生活点滴,分享学习心得

C++11构造函数

defaulted函数和deleted函数

Posted by YuChen on November 26, 2017

我们使用default关键字可以为函数指定一个默认的实现。这就是C++11中defaulted function的用法。在下面的例子中,person类没有写出其构造函数和析构函数,而是显式地强制编译器自动生成默认构造函数和析构函数。

1
2
3
4
5
class person {
  public:
    person(void) = default;
    virtual ~person(void) = default;
};

defaulted function相对应的就是deleted functiondeleted 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的两个特征,简单而有效。





更多文章