C++单例模式
单例模式是任何面向对象语言绕不过的,单例模式是很有必要的,接下来我用最朴素的语言来解释和记录单例模式的学习。 什么是单例模式? 单例模式就是一个类只能被实例化一次 ,更准确的说是 只能有一个实例化的对象的类。 创建一个单例模式的类(初想) 一个类只能有一个实例化的对象,那么这个类就要禁止别人new出来,或者通过直接定义一个对象出来 class CAR { public: CAR(){} ~CAR(){} }; CAR a; CAR *b = new CAR; 很明显这样的类可以被程序员用上面这两种方式实例化。那么考虑,如何禁止用上面的这两种方式实例化一个类呢? 如果把构造函数私有化,很明显上面这两种方法都会默认的去调用构造函数,当构造函数是private或者protected时,构造函数将无法从外部调用。 class CSingleton { private: CSingleton() { } }; int main() { CSingleton t; CSingleton *tt = new CSingleton; } 上面的代码选择了这样实例化类,很明显编译器会报错,因为私有化的构造函数无法被外部调用 error: ‘CSingleton::CSingleton()’ is private 既然构造函数是私有了,那么他就只能被类内部的成员函数调用