其中CMyTest是一個類,main函數中test是這個類的一個局部變量(對象)。
看完上面這個例子,再仔細推敲一下下面這段話:
類的靜態函數不屬於該類的任何一個對象,而是屬於類本身,所以不受對象局部變量的影響,在運行時可以直接調用類的靜態函數,從而啟動線程!
相反,如果一個類的一個局部對象的生命周期結束了,難道線程函數就不能用了嗎?
其實類的靜態函數就跟全局函數是一個樣子的, 只是調用的時候要加下個類修飾符而以.
至於為什么不能是非靜態成員函數呢, 因為非靜態成員函數都會在參數列表中加上一個this指針為為參數, 這樣的話你寫的線程函數就不符合調用規定了.
比如 DWORD WINAPI ThreadFun(LPVOID); 是非靜態的,實際編譯后,就會變成
DWORD WINAPI ThreadFun(LPVOID, CMyClass *this);
這個函數就明顯不能作為線程的函數了, 因為多了個參數.所以編譯就過不了了.
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。