[英]Declare and define static variable in C++ header?
如果你真的必須避免任何.cpp文件,你可以濫用單例模式:
class Foo {
public:
static Bar& getMyStatic() {
static Bar bar;
return bar;
};
};
這是有效的,因為現在變量是函數內部的靜態變量,而static
在函數上下文中的含義與類上下文中的含義不同。 對於函數,鏈接器確實識別多個相同的定義並丟棄副本。
但是,當然,我強烈建議不要避免使用.cpp文件:這意味着你需要在一個大塊中構建整個程序或至少大部分程序。 您所做的每一項更改都需要完全重建,這會顯着減慢您的更改 - 編譯 - 測試周期。 對於可能不是問題的非常小的項目,但它適用於中型到大型項目。
對於靜態變量,您必須放入.cpp文件,以避免在意圖只有一個靜態變量的情況下出現多個靜態變量。 除了使用大型內聯方法不是一個好主意,因為它只是對編譯器的一個提示,但也使編譯需要更長時間(你在開發中更改了一些這些函數,然后需要編譯很多相關文件!)
但是,如果你不想要很多只帶有一些靜態的.cpp文件,為什么不用一個文件來存儲它們。
只要您在整個項目中只包含該頭文件一次,就可以了。 然而,這是一個非常強烈的要求,並且很難讓其他人堅持。
你可以有一個static
變量,但這意味着你有一個以上的整個程序,這可能或不重要(請記住,你將來不能改變它,所以你可能有一個所謂的“潛在的錯誤“ - 你改變了一些其他的代碼,突然間你創建了一個新的bug,因為變量不是一個變量)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.