它在代碼最好的解釋:差異靜態常量和靜態的返回時,一個靜態變量
static Unit& None() { static Unit none(....); return none;}
的區別是什麼來?
static const Unit& None() { static Unit none(....); return none;}
它在代碼最好的解釋:差異靜態常量和靜態的返回時,一個靜態變量
static Unit& None() { static Unit none(....); return none;}
的區別是什麼來?
static const Unit& None() { static Unit none(....); return none;}
在函數前的static
具有從static
函數內完全不同的。尤其是,與退貨類型完全無關。這些功能的返回類型與此處相同:
Unit& None() { static Unit none(....); return none;}
const Unit& None() { static Unit none(....); return none;}
即,沒有static
限定符。
因此,差異僅在Unit&
和Unit const&
之間:第一個允許修改返回值,第二個不允許。
1)對於一個類的成員,static
意味着函數不能訪問實例變量和類的實例的功能;在名稱空間範圍函數中,static
表示函數符號不會從編譯單元導出。
您正在返回對靜態對象/變量的引用。所以可以給函數賦一個值,然後改變那個對象/變量的值。
第二個拒絕改變none
值:
static int& func1()
{
static int a = 1; return a;
}
static const int& func2()
{
static int a = 1; return a;
}
int main()
{
func1() = 10; // OK
func2() = 10; // error: assignment of read-only location
}
你問的區別是什麼'股'&和'常量單位&'之間? – 2013-03-18 13:47:42
正如@DrewDormann所說的那樣,'const'和'Unit&'一起,而不是'static'。 – Xymostech 2013-03-18 13:48:24