深入解析C++編程中范圍解析運算符的作用及使用
范圍解析運算符 :: 用于標識和消除在不同范圍內(nèi)使用的標識符。
語法
:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier
備注
identifier 可以是變量、函數(shù)或枚舉值。
具有命名空間和類
以下示例顯示范圍解析運算符如何與命名空間和類一起使用:
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; }
沒有范圍限定符的范圍解析運算符表示全局命名空間。
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; }
你可以使用范圍解析運算符來標識命名空間的成員,還可標識通過 using 指定成員的命名空間的命名空間。在下面的示例中,你可以使用 NamespaceC 限定 ClassB(盡管 ClassB 已在 NamespaceB 中聲明),因為已通過 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; }
可使用范圍解析運算符鏈。在以下示例中,NamespaceD::NamespaceD1 將標識嵌套的命名空間 NamespaceD1,并且 NamespaceE::ClassE::ClassE1 將標識嵌套的類 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)成員
必須使用范圍解析運算符來調(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ū)分范圍的解析運算符還可以與區(qū)分范圍的枚舉枚舉聲明的值一起使用,如下例所示:
enum class EnumA{ First, Second, Third }; int main() { EnumA enum_value = EnumA::First; }
- 詳解C++中對構(gòu)造函數(shù)和賦值運算符的復(fù)制和移動操作
- 詳解C++中的函數(shù)調(diào)用和下標以及成員訪問運算符的重載
- 簡單了解C++語言中的二元運算符和賦值運算符
- 詳解C++編程中一元運算符的重載
- 詳解C++中const_cast與reinterpret_cast運算符的用法
- 深入解析C++中的動態(tài)類型轉(zhuǎn)換與靜態(tài)類型轉(zhuǎn)換運算符
- 講解C++編程中Address-of運算符&的作用及用法
- 詳解C++編程中的sizeof運算符與typeid運算符
- 詳解C++中二進制求補運算符與下標運算符的用法
- 詳解C++中new運算符和delete運算符的使用
相關(guān)文章
C++中for循環(huán)與while循環(huán)的區(qū)別總結(jié)
這篇文章主要給大家介紹了關(guān)于C++中for循環(huán)與while循環(huán)的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10Qt5+QMediaPlayer實現(xiàn)音樂播放器的示例代碼
這篇文章主要為大家詳細介紹了如何利用Qt5和QMediaPlayer實現(xiàn)簡易的音樂播放器,文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下2022-12-12C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持(下)
這篇文章主要介紹的是 C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對多線程/并發(fā)的支持,接下來我們看看回發(fā)生什么吧2021-10-10VisualStudio2019配置OpenCV4.5.0的方法示例
這篇文章主要介紹了VisualStudio2019配置OpenCV4.5.0的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03