单例模式即某个类只能创建一次实例。为了防止对象被多次创建,防止多实例造成一些混乱。
实现方式:
定义一个static变量,在new对象前先判断一下static变量不为NULL才new。
原理:被声明为static的成员变量是一个公共变量,只有一块内存空间,每个实例都拥有这块内存空间,其中一个实例改了它,那其他实例获取到的就是改了以后的值。
注意:static类型的类对象必须要在类外面进行初始化,否则将报错(为这个错误头疼了一晚上)
class A{
private:
static B *p;
public:
void helloworld(){
if(p == NULL){
p = new B();
}
return p;
}
}
B* A::p = NULL; //注意,static类型的类对象必须要在类外面进行初始化
class B{
........
........
}
以上这种单例模式是懒汉模式,还有饿汉模式,使用内部类,一般共三种模式。