[英]Why enum is accessible using scope resolution operator?
#include <iostream>
using namespace std;
class Sample{
public:
enum{ x = 10 };
};
int main(){
cout<<Sample::x<<endl;
return 0;
}
為什么使用主函數中的作用域解析運算符可以訪問類中的枚舉x?
我假設您在問為什么不必須實例化Sample
來訪問x
。 原因是enum
類似於typedef
:它們創建一個新類型,而不創建變量。 您可以以與訪問class
內的typedef
或struct
/ class
聲明相同的方式訪問Sample::x
。
因為enum
是在public
區域中定義的。 評論public
關鍵字,您將無法訪問它。 您在公共/非公共區域中聲明的任何typedef
。
因為CPP中的enum
默認情況下具有內部鏈接 ,即,如果在struct or class
聲明它們,它們將變為私有 。 因此,您必須使用::
:( 范圍解析運算符 )來訪問枚舉數(枚舉常量)。
在C中,您可以直接訪問枚舉數 ,因為默認情況下它們是全局的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.