單例模式(C )以及共享問題

2021-09-29 04:59:12 字數 741 閱讀 8746

//單例模式

class

single

//建構函式私有

public

:static single *

getinstance()

//使用靜態函式建立物件

return my_instance;

}//使用內部類釋放物件

class

deleteobj}}

;//其他正常函式

void

func()

private

:static single *my_instance;};

single* single::my_instance =

null

;int

main()

std::call_once使用

std::call_once(),c++11引入的函式,該函式第二個引數是乙個函式名

call_once()保證函式只被呼叫一次,具備互斥量能力,比互斥量更高效

與乙個標記結合使用: std::once_flag

static

void

createinstance()

//用於std::call_once呼叫

static single *

getinstance()

//單例模式內部使用靜態函式建立物件

單例模式以及列舉

相同點 同樣是類中有固定的物件個數 不同點 單例模式只有乙個物件,列舉是有限個物件,但物件只有乙個時,也可以叫做單例模式 單例模式有七種實現方式,但本質上是讓讓類只能建立乙個物件,為了保證這個,只能在類內部建立物件,而在類外部外部無法建立,所以構造器是空的 給出兩種實現方式 餓漢式 提前建立好物件 ...

c 實現單例模式以及單例的派生類

單例模式 乙個類只用乙個物件,如果使用者建立多個物件需要返回錯誤,建構函式只能被訪問一次,不能給使用者隨便訪問建構函式的介面,即建構函式不能是public型別的。每個使用者在不知道這個類唯一例項的情況下都可以快速訪問這個物件。那麼就必須有乙個函式需要返回該例項,並且該函式可以不適用物件進行呼叫,那麼...

C 單例模式

include using namespace std 單例類的c 實現 class singleton 構造方法實現 singleton singleton void singleton setvar int var main int main int argc,char argv return ...