深入解析C++編程中范圍解析運算符的作用及使用
范圍解析運算符 :: 用于標(biāo)識和消除在不同范圍內(nèi)使用的標(biāo)識符。
語法
:: 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;
}
你可以使用范圍解析運算符來標(biāo)識命名空間的成員,還可標(biāo)識通過 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 將標(biāo)識嵌套的命名空間 NamespaceD1,并且 NamespaceE::ClassE::ClassE1 將標(biāo)識嵌套的類 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)用和下標(biāo)以及成員訪問運算符的重載
- 簡單了解C++語言中的二元運算符和賦值運算符
- 詳解C++編程中一元運算符的重載
- 詳解C++中const_cast與reinterpret_cast運算符的用法
- 深入解析C++中的動態(tài)類型轉(zhuǎn)換與靜態(tài)類型轉(zhuǎn)換運算符
- 講解C++編程中Address-of運算符&的作用及用法
- 詳解C++編程中的sizeof運算符與typeid運算符
- 詳解C++中二進(jìn)制求補運算符與下標(biāo)運算符的用法
- 詳解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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Qt5+QMediaPlayer實現(xiàn)音樂播放器的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Qt5和QMediaPlayer實現(xiàn)簡易的音樂播放器,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下2022-12-12
C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持(下)
這篇文章主要介紹的是 C++ 多線程編程建議之 C++ 對多線程/并發(fā)的支持的相關(guān)資料,承接前文 現(xiàn)代 C++ 對多線程/并發(fā)的支持,接下來我們看看回發(fā)生什么吧2021-10-10
VisualStudio2019配置OpenCV4.5.0的方法示例
這篇文章主要介紹了VisualStudio2019配置OpenCV4.5.0的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03

