簡體   English   中英

為什么使用范圍解析運算符可訪問枚舉?

[英]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內的typedefstruct / class聲明相同的方式訪問Sample::x

因為enum是在public區域中定義的。 評論public關鍵字,您將無法訪問它。 您在公共/非公共區域中聲明的任何typedef

因為CPP中的enum默認情況下具有內部鏈接 ,即,如果在struct or class聲明它們,它們將變為私有 因此,您必須使用:: :( 范圍解析運算符 )來訪問枚舉數(枚舉常量)。

在C中,您可以直接訪問枚舉數 ,因為默認情況下它們是全局的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM