从之前条款05中了解到c++自动声明构造函数、复制构造函数、赋值操作符、析构函数,并且这些函数都是public修饰。当我们在设计类的时候可能不想使用c++提供的函数。这时候我们就需要自己来声明了。比如在设计单例类的时候,我们肯定不希望对象被复制,应该只有一个对象,所以我们会声明private 构造函数,并且不予实现即可。
通常我们开发过程中单例模式会用到该条款,但是这里也介绍了另一种实现方式,就是在基类(Uncopyable)中用private修饰构造函数以及赋值操作符,然后子类继承基类,这样使用子类的时候也是一样的效果,并且在编译期间能检测出错误用法。
请记住
- 为驳回编译器自动(暗自)提供的机能,可将对应的成员函数声明为private并不予实现。使用像Uncopyable这样的base class也是一种做法。