為什麼類中的執行緒函式必須要宣告靜態?

逗比汪星人發表於2012-04-19
之前也沒注意到這問題,大家先搞清楚下面幾個關鍵詞吧:
class CMyTest
{
public:
    CMyTest();
    ~CMyTest();

    DWORD   Start();
    static DWORD WINAPI ThreadFun(LPVOID);

    // ....
};

void main()
{
    CMyTest test;
    // .....
}

其中CMyTest是一個類,main函式中test是這個類的一個區域性變數(物件)。


看完上面這個例子,再仔細推敲一下下面這段話:




類的靜態函式不屬於該類的任何一個物件,而是屬於類本身,所以不受物件區域性變數的影響,在執行時可以直接呼叫類的靜態函式,從而啟動執行緒!


相反,如果一個類的一個區域性物件的生命週期結束了,難道執行緒函式就不能用了嗎?

相關文章