范围解析运算符 :: 用于标识和消除在不同范围内使用的标识符。

语法

:: 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++编程中范围解析运算符的作用及使用...相关推荐

  1. 深入解析C++编程中的静态成员函数

    这篇文章主要介绍了深入解析C++编程中的静态成员函数,是C++入门学习中的基础知识,需要的朋友可以参考下 C++静态成员函数 与数据成员类似,成员函数也可以定义为静态的,在类中声明函数的前面加stat ...

  2. c语言地址有什么作用是什么,C语言中取地址运算符是什么?

    在C语言中取地址运算符是"&"."&"作为一元运算符,结果是右操作对象的地址:地址本身是一个抽象的概念,用于表示对象在存储器中的逻辑位置. 在C ...

  3. 、简述global关键字的作用_在C#编程中global关键字的作用及其用法

    在C#编程中,global 是 C# 2.0 中新增的关键字,理论上说,如果代码写得好的话,根本不需要用到它.今天就为大家展示下global关键字的作用及其用法,希望对大家学习C#编程有所帮助. 假设 ...

  4. c程序语言符号的作用,c语言宏定义中的#,##,#@及\符号的作用

    1.#(stringizing)字符串化操作符 作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串.其只能用于有传入参数的宏定   义中,且必须置于宏定义体中的参数名前. 如: #def ...

  5. 解析少儿编程中的运用的科技语言

    少儿编程作为一种科技语言是没有国界的,适用于全世界.而在科技发展的今天,编程应用于各个领域.很多国家都意识到编程学习的重要性,因此,采取了各种措施来推广编程教育,如英国将编程列入中小学必修课程中,美国 ...

  6. c语言argc和argv的作用,c语言中int main(int argc, char argv)中argc和argv的作用

    摘要:我们在开发C语言时,经常看到int main(int argc, char *argv[]),但是没有太多的关注于argc和argv这两个参数,其实它们有很多的作用呢. 编写一个计算器 为了简单 ...

  7. 计算机语言中的次方,浅谈Go语言中的次方用法

    Go语言中符号 " ^ " 不再用于次方,而是表示"按位异或的运算" 具体的运算规则如下: 按位异或 ^ : 两位一个为 0, 一个为 1 ,结果为 1 ,否则 ...

  8. c 解析java byte,深入解析Java编程中面向字节流的一些应用

    文件输入输出流 文件输入输出流 FileInputStream 和 FileOutputStream 负责完成对本地磁盘文件的顺序输入输出操作. [例]通过程序创建一个文件,从键盘输入字符,当遇到字符 ...

  9. python json模块详解_深入解析Python编程中JSON模块的使用

    JSON编码支持的基本数据类型为 None , bool , int , float 和 str , 以及包含这些类型数据的lists,tuples和dictionaries. 对于dictionar ...

最新文章

  1. keras系列︱图像多分类训练与利用bottleneck features进行微调(三)
  2. 单链表-删除单链表L中奇数号节点(双指针法)
  3. monkeyrunner无法运行的问题解决方案总结
  4. jQuery 文件上传插件:uploadify、swfupload
  5. python输入两个变量的值、输出大的_Python 变量和输入输出 关卡二
  6. datatables设置解析
  7. UIView 的基础
  8. linux中有fd set函数吗,LINUX下FD_SET介绍
  9. ***经验谈之SA权限***的感悟
  10. 微信小程序 navigator 用来实现页面跳转功能
  11. mybatis xml sql分页
  12. 蓝桥杯 java 楼梯,递归1之楼梯问题
  13. Ubuntu 无法解析域名 提示错误
  14. Ubuntu系统下打开chm文件
  15. alt.js 使用教程
  16. 【小家Spring】Spring AOP各个组件概述与总结【Pointcut、Advice、Advisor、Advised、TargetSource、AdvisorChainFactory...】
  17. ubuntu 设置动态壁纸来美化桌面(Live Wallpaper)
  18. 你了解常见电子原件的识别吗?
  19. js中的boolean原始类型和Boolean引用类型
  20. Linux:系统性能监控工具-tsar安装和使用

热门文章

  1. java实现物体下落效果_手撸一个物体下落的控件,实现雪花飘落效果
  2. HTML内置css改变文字效果,CSS+HTML文字效果
  3. QString转Char*字符串
  4. 深入理解redis复制原理
  5. MyBatis整合Spring的实现(11)
  6. wsimport命令讲解
  7. AJAX编写用户注册实例及技术小结
  8. linux用户limit修改,linux – 使用cgroups作为用户设置用户创建的systemd范围的MemoryLimit...
  9. 个盘子的汉诺塔需要移动几步_坨——理解递归实现quot;汉诺塔quot;代码的关键...
  10. 全员编程的时代下,软件测试如何转渗透测试?