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

被折叠的 条评论
为什么被折叠?



