[問題] 物件中的function裡面所宣告的static變數是共享的?

看板C_and_CPP作者 (Bon!)時間14年前 (2011/03/21 14:51), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Qt 4.7 最近遇到奇怪的問題 在我的認知裡面,只有在宣告class的時候所宣告的static變數 才會讓所有相同類別的物件共享 在function裡面宣告的static變數應該是個別物件私有的才對 可是測試下卻不是這回事? 例如 void UPlot::plotScreen() { static int count = 0 ; if ( count < 1000 ) count++ ; else plot(); } 照理來說每個圖被開啟的時候都會等待count加到1000後才真正繪圖 但是我發現我只有第一個圖(物件)會等待 只要之後產生的物件通通不會等待 是我的觀念哪裡錯了嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.200.75

03/21 15:36, , 1F
你只是需要一個單純的member variable
03/21 15:36, 1F

03/21 15:36, , 2F
static就是唯一一個 永遠只有一個
03/21 15:36, 2F

03/21 15:53, , 3F
你可以理解為是這個 function 的各次呼叫之間共享的變數
03/21 15:53, 3F

03/21 16:24, , 4F
同一class並不會為各instance產生不同function吧?
03/21 16:24, 4F

03/21 16:24, , 5F
member function簡略想成會傳入*this的function就好懂了
03/21 16:24, 5F

03/21 21:18, , 6F
瞭解了!!!謝謝
03/21 21:18, 6F

03/21 21:20, , 7F
所以宣告在class和function裡的差別只是作用域而以囉
03/21 21:20, 7F
文章代碼(AID): #1DXlLveP (C_and_CPP)