深入解析C++編程中范圍解析運(yùn)算符的作用及使用
范圍解析運(yùn)算符 :: 用于標(biāo)識(shí)和消除在不同范圍內(nèi)使用的標(biāo)識(shí)符。
語法
:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier
備注
identifier 可以是變量、函數(shù)或枚舉值。
具有命名空間和類
以下示例顯示范圍解析運(yùn)算符如何與命名空間和類一起使用:
namespace NamespaceA{ int x; class ClassA { public: int x; }; } int main() { // A namespace name used to disambiguate NamespaceA::x = 1; // A class name used to disambiguate NamespaceA::ClassA a1; a1.x = 2; }
沒有范圍限定符的范圍解析運(yùn)算符表示全局命名空間。
namespace NamespaceA{ int x; } int x; int main() { int x; // the x in main() x = 0; // The x in the global namespace ::x = 1; // The x in the A namespace NamespaceA::x = 2; }
你可以使用范圍解析運(yùn)算符來標(biāo)識(shí)命名空間的成員,還可標(biāo)識(shí)通過 using 指定成員的命名空間的命名空間。在下面的示例中,你可以使用 NamespaceC 限定 ClassB(盡管 ClassB 已在 NamespaceB 中聲明),因?yàn)橐淹ㄟ^ using 指令在 NamespaceC 中指定 NamespaceB。
namespace NamespaceB { class ClassB { public: int x; }; } namespace NamespaceC{ using namespace B; } int main() { NamespaceB::ClassB c_b; NamespaceC::ClassB c_c; c_b.x = 3; c_c.x = 4; }
可使用范圍解析運(yùn)算符鏈。在以下示例中,NamespaceD::NamespaceD1 將標(biāo)識(shí)嵌套的命名空間 NamespaceD1,并且 NamespaceE::ClassE::ClassE1 將標(biāo)識(shí)嵌套的類 ClassE1。
namespace NamespaceD{ namespace NamespaceD1{ int x; } } namespace NamespaceE{ class ClassE{ public: class ClassE1{ public: int x; }; }; } int main() { NamespaceD:: NamespaceD1::x = 6; NamespaceE::ClassE::ClassE1 e1; e1.x = 7 ; }
具有靜態(tài)成員
必須使用范圍解析運(yùn)算符來調(diào)用類的靜態(tài)成員。
class ClassG { public: static int get_x() { return x;} static int x; }; int ClassG::x = 6; int main() { int gx1 = ClassG::x; int gx2 = ClassG::get_x(); }
具有區(qū)分范圍的枚舉
區(qū)分范圍的解析運(yùn)算符還可以與區(qū)分范圍的枚舉枚舉聲明的值一起使用,如下例所示:
enum class EnumA{ First, Second, Third }; int main() { EnumA enum_value = EnumA::First; }
- 詳解C++中對(duì)構(gòu)造函數(shù)和賦值運(yùn)算符的復(fù)制和移動(dòng)操作
- 詳解C++中的函數(shù)調(diào)用和下標(biāo)以及成員訪問運(yùn)算符的重載
- 簡(jiǎn)單了解C++語言中的二元運(yùn)算符和賦值運(yùn)算符
- 詳解C++編程中一元運(yùn)算符的重載
- 詳解C++中const_cast與reinterpret_cast運(yùn)算符的用法
- 深入解析C++中的動(dòng)態(tài)類型轉(zhuǎn)換與靜態(tài)類型轉(zhuǎn)換運(yùn)算符
- 講解C++編程中Address-of運(yùn)算符&的作用及用法
- 詳解C++編程中的sizeof運(yùn)算符與typeid運(yùn)算符
- 詳解C++中二進(jìn)制求補(bǔ)運(yùn)算符與下標(biāo)運(yùn)算符的用法
- 詳解C++中new運(yùn)算符和delete運(yùn)算符的使用
相關(guān)文章
淺談c語言中轉(zhuǎn)義字符的用法及注意事項(xiàng)
下面小編就為大家?guī)硪黄獪\談c語言中轉(zhuǎn)義字符的用法及注意事項(xiàng)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-08-08C++中for循環(huán)與while循環(huán)的區(qū)別總結(jié)
這篇文章主要給大家介紹了關(guān)于C++中for循環(huán)與while循環(huán)的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Qt5+QMediaPlayer實(shí)現(xiàn)音樂播放器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Qt5和QMediaPlayer實(shí)現(xiàn)簡(jiǎn)易的音樂播放器,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以參考一下2022-12-12Matlab實(shí)現(xiàn)貪吃蛇小游戲的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Matlab實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++ 多線程編程建議之 C++ 對(duì)多線程/并發(fā)的支持(下)
這篇文章主要介紹的是 C++ 多線程編程建議之 C++ 對(duì)多線程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對(duì)多線程/并發(fā)的支持,接下來我們看看回發(fā)生什么吧2021-10-10VisualStudio2019配置OpenCV4.5.0的方法示例
這篇文章主要介紹了VisualStudio2019配置OpenCV4.5.0的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03