深入解析C++编程中范围解析运算符的作用及使用
范围解析运算符 :: 用于标识和消除在不同范围内使用的标识符。
语法
:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier
备注
identifier 可以是变量、函数或枚举值。
具有命名空间和类
以下示例显示范围解析运算符如何与命名空间和类一起使用:
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 ; }
具有静态成员
必须使用范围解析运算符来调用类的静态成员。
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(); }
具有区分范围的枚举
区分范围的解析运算符还可以与区分范围的枚举枚举声明的值一起使用,如下例所示:
enum class EnumA{ First, Second, Third }; int main() { EnumA enum_value = EnumA::First; }
栏 目:C语言
本文地址:https://www.xiuzhanwang.com/a1/Cyuyan/2574.html
您可能感兴趣的文章
- 04-02c语言没有round函数 round c语言
- 01-10深入理解约瑟夫环的数学优化方法
- 01-10深入二叉树两个结点的最低共同父结点的详解
- 01-10数据结构课程设计- 解析最少换车次数的问题详解
- 01-10深入理解C++中常见的关键字含义
- 01-10使用C++实现全排列算法的方法详解
- 01-10深入Main函数中的参数argc,argv的使用详解
- 01-10深入第K大数问题以及算法概要的详解
- 01-10深入解析最长公共子串
- 01-10c++中inline的用法分析
阅读排行
本栏相关
- 04-02c语言函数调用后清空内存 c语言调用
- 04-02func函数+在C语言 func函数在c语言中
- 04-02c语言的正则匹配函数 c语言正则表达
- 04-02c语言用函数写分段 用c语言表示分段
- 04-02c语言中对数函数的表达式 c语言中对
- 04-02c语言编写函数冒泡排序 c语言冒泡排
- 04-02c语言没有round函数 round c语言
- 04-02c语言分段函数怎么求 用c语言求分段
- 04-02C语言中怎么打出三角函数 c语言中怎
- 04-02c语言调用函数求fibo C语言调用函数求
随机阅读
- 01-10delphi制作wav文件的方法
- 01-11ajax实现页面的局部加载
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10C#中split用法实例总结
- 04-02jquery与jsp,用jquery
- 01-10SublimeText编译C开发环境设置
- 08-05dedecms(织梦)副栏目数量限制代码修改