看板 C_and_CPP 關於我們 聯絡資訊
通常一份規模不小的code都會用很多class與繼承,然後都會分很多.cpp與.h檔 若是class的member function,通常會把prototype寫在.h檔,然後定義寫在.cpp檔 小弟剛進公司沒有多久,看到有些不是屬於class的member function 他們就會宣告成static,然後也不把prototype寫在.h檔,而是直接和定義一起寫在.cpp檔 雖然會用但是不太了解原因。 請問這樣的做法有什麼特別考量嗎? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.10.132
james732:代表該函式不會被其他檔案使用 04/07 14:15
Zoxge:請問是因為global的static function嗎? 04/07 14:23
Zoxge:那如果有把prototype寫在.h檔,那其他檔案有include那個.h檔 04/07 14:33
Zoxge:這樣其它檔案可以使用那個function嗎? 04/07 14:34
hilorrk:static讓外部檔案無法link到該function..有點privarte感覺 04/07 14:42
hilorrk:其他檔案是無法使用的,就算宣告了也找不到定義 04/07 14:43
purpose:連原型都沒有寫在class裡的函數,首先就不會是其 member 04/07 14:54
hilorrk:我以為他是說 「不屬於class的member的function」XD 04/07 14:59
purpose:原 PO 下次講清楚,就簡單的寫 static function 就好了 04/07 15:06
purpose:目的是 File Scope,在 C++ 流行用 namespace { } 取代它 04/07 15:07
Zoxge:喔喔 好的 sorry 謝謝各位 04/07 15:10
Zoxge:p大是說static function的做法已經被namespace寫法取代? 04/07 15:11
s3748679:印象中是因為static太多用途才有namespace{}的方式 04/07 15:13
james732:找工作的時候超容易遇到static問題 04/07 16:05