我不知道,當我聲明的變量使用什麼內存空間和一個函數或方法,例如外初始化值之外聲明的變量是什麼內存,用於方法或函數
// CBar.h>
class CBar
{
public:
CBar();
~CBar();
};
// CBar.cpp
std::string const NAME = "mr.foo";
CBar::CBar()
{
std::cout << NAME << std::endl;
}
CBar::~CBar()
{
}
我在方法之外聲明的NAME變量。是否有任何問題聲明和初始化這個NAME變量?每次我創建CBar實例時,NAME變量仍然存在?
謝謝。
沒有「靜態鏈接」這樣的東西。 (靜態變量不可鏈接。) –
@DwayneTowell好點。謝謝,我不小心。編輯糾正... – Turix
@DwayneTowell:這一點是正確的,但解釋不是。一個名稱在C++中具有「鏈接」,可能表示在另一個作用域中聲明的同一個實體。因此,雖然沒有「靜態鏈接」,但當使用該名稱在同一翻譯單元中的其他範圍內引用實體時,可以使用「內部鏈接」。完全沒有鏈接的名稱意味着該實體不能被任何其他作用域的名稱引用,包括同一翻譯單元內的作用域。有關更多信息,請參閱C++ 11 3.5.2。 –