單例模式即某個類只能創建一次實例。爲了防止對象被多次創建,防止多實例造成一些混亂。
實現方式:
定義一個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{
........
........
}
以上這種單例模式是懶漢模式,還有餓漢模式,使用內部類,一般共三種模式。