Qt 單例模式的實現 ,自定義巨集實現方法

2022-09-14 20:18:14 字數 939 閱讀 9867

static myclass* myclass::instance()

static myclass*myclass::instance()

mutex.unlock();

}return

inst.data();

}

既保證了執行緒安全又防止了記憶體洩漏,效率也沒降低太多,簡直完美。

可惜每次都要重複這麼幾行實在麻煩,於是寫了乙個

template 

class

singleton

mutex.unlock();

}return

inst.data();

}};

使用的時候直接這樣:

myclass* inst = singleton::instance();

#define declare_singleton(class) \q_disable_copy(class) \

public

: \

static class*instance() \

\return

inst.data(); \

}

class

myclass

當然,為了要保證真的是單例模式,還要把建構函式限制為private,不然以後什麼時候忘記了這碼事,在外面又new了一下就不好了。

另外qt本身自帶了乙個巨集q_global_static,也有類似單例模式的效果,qthreadpool::globalinstance()函式的實現就是利用了這個巨集。不過它的主要用處是宣告全域性變數,和singleton還是有差別的。

Qt自定義事件的實現

後來我就想,那qt的發明人是怎麼定義事件的呢?其實站在qt發明人的角度,qevent就是他們的 自定義事件 ok!這就好辦了!看看qt發明人怎麼定義的qevent,看看他們怎麼用自己定義的qevent,不就回答了文章開頭的倆問題了嘛!o o 我把整個過程總結為 長官定義事件 信使傳遞事件 軍隊接收並...

Qt 自定義事件的實現

後來我就想,那qt的發明人是怎麼定義事件的呢?其實站在qt發明人的角度,qevent就是他們的 自定義事件 ok!這就好辦了!看看qt發明人怎麼定義的qevent,看看他們怎麼用自己定義的qevent,不就回答了文章開頭的倆問題了嘛!o o 我把整個過程總結為 長官定義事件 信使傳遞事件 軍隊接收並...

C 單例類實現巨集定義

專案中單例類很多的話,每個都要宣告 回比較累贅,所以寫了乙個巨集定義簡介使用 巨集定義如下 define declare sington classname private classname classname classname const classname classname operato...