#include <iostream>
using namespace std;
class Sample{
public:
enum{ x = 10 };
};
int main(){
cout<<Sample::x<<endl;
return 0;
}
爲什麼在類中的枚舉是可以使用範圍解析運算符在主函數中訪問?爲什麼使用範圍解析運算符可以訪問enum?
#include <iostream>
using namespace std;
class Sample{
public:
enum{ x = 10 };
};
int main(){
cout<<Sample::x<<endl;
return 0;
}
爲什麼在類中的枚舉是可以使用範圍解析運算符在主函數中訪問?爲什麼使用範圍解析運算符可以訪問enum?
我假設你問你爲什麼不必實例化一個Sample
來訪問x
。原因是enum
s就像typedef
s:他們創建一個新類型,他們不創建一個變量。您可以像訪問typedef
或類中的struct
/class
聲明一樣訪問Sample::x
。
謝謝!是的,我的懷疑正是你所說的。但抱歉,我不理解這一行:「您可以像訪問類中的typedef或struct/class聲明一樣訪問Sample :: x。」 – niting112 2012-02-26 03:32:10
@ niting112例如,如果你做'struct A {struct B {}; };'你可以做'A :: B b;' – 2012-02-26 04:07:26
因爲enum
定義在public
區域。評論public
關鍵字,你將無法訪問它。您在公共/非公共區域申報的typedef
也一樣。
因爲enum
S IN CPP具有默認內部鏈接即它們是由私人如果您在struct or class
申報。因此,您必須使用::
(範圍分辨率運算符)來訪問枚舉(枚舉常量)。
在C語言中,你可以訪問統計員直接,因爲他們是在默認情況下全球。
因爲這就是定義C++語言的方式。 – 2012-02-26 03:18:17
@GregHewgill ok ..哪些其他數據類型有效? – niting112 2012-02-26 03:20:04
@ niting112所有其他數據類型和typedefs – 2012-02-26 03:22:47