C 類的執行緒函式為什麼要加static修飾

2021-07-06 01:24:53 字數 404 閱讀 9444

首先看下面這個類

class cmytest

;void main()

threadfun(lpvoid) 為什麼要加static修飾呢!

原來非靜態成員函式都會在引數列表中加上乙個this指標為為引數, 這樣的話你寫的執行緒函式就不符合呼叫規定了.

比如 dword winapi threadfun(lpvoid); 是非靜態的,實際編譯後,就會變成

dword winapi threadfun(lpvoid, cmyclass *this); 

這個函式就明顯不能作為執行緒的函式了, 因為多了個引數.所以編譯就過不了了.

加上static修飾後,類的成員函式就不會被加上預設的this引數,所以就符合呼叫規定了。

scanf函式輸入時為什麼要加

對於scanf函式,它將引數視為乙個位址,將鍵盤輸入的字元傳到這個位址中去,通常我們都是用的 位址的符號,事實上如果乙個值恰好是乙個位址的話,不加 也一樣可以的 如下例 測試環境為win7 64位 include void main int n 0x18ff48 int m 0x18ff44 檢視此...

C 函式的引數型別中為什麼要加const

const 是用於對常量的修改,帶有const的引用可以稱之為常量引用。但是在函式中為什麼要新增這個呢,比如void fun string 和void fun const string 到底有什麼區別呢,本文就些問題進行簡單介紹。給定給以下兩個函式 void fun1 string s void f...

java裡為什麼主函式前面要加static修飾

先說一下static 1.static 修飾的域,我們叫靜態域,它是歸類所有的,被所有物件所共享,只有乙個 2.static修飾的區塊,域只會初始化一次 3.static修飾的域或方法,可以直接通過類的名字加上.進行呼叫 4.static修飾的方法內不能直接使用非靜態成員 static關鍵字,告知編...