• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 深入解析C++编程中范围解析运算符的作用及使用

深入解析C++编程中范围解析运算符的作用及使用

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++不能重载的运算符,c++运算符重载,c++ 运算符,c++运算符优先级,c++逻辑运算符等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

:: identifier class-name :: identifier namespace :: identifier enum class :: identifier enum struct :: identifier

</div>
备注
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;

}

</div>

没有范围限定符的范围解析运算符表示全局命名空间。

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; 
}

</div>

你可以使用范围解析运算符来标识命名空间的成员,还可标识通过 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;
}

</div>

可使用范围解析运算符链。在以下示例中,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 ;
}

</div>

具有静态成员
必须使用范围解析运算符来调用类的静态成员。

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(); 
}

</div>

具有区分范围的枚举
区分范围的解析运算符还可以与区分范围的枚举枚举声明的值一起使用,如下例所示:

enum class EnumA{
  First,
  Second,
  Third
};

int main() {

  EnumA enum_value = EnumA::First;
}

</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 深入解析C++编程中的运算符重载
  • 深入解析C++编程中范围解析运算符的作用及使用
  • C++运算符重载规则详解
  • 简介C++编程中的运算符重载
  • c++ *运算符重载
  • c++运算符重载基础知识详解
  • C++运算符重载的方法详细解析
  • C++中不能被重载的运算符介绍
  • C++中的异或运算符^的使用方法
  • C++按位异或运算符的使用介绍

相关文章

  • 2017-05-28C++之BOOST字符串查找示例
  • 2017-05-28C++实现八皇后问题的方法
  • 2017-05-28C++ 整数拆分方法详解
  • 2017-05-28c++验证哥德巴赫猜想
  • 2017-05-28C语言创建和操作单链表数据结构的实例教程
  • 2017-05-28C++实现将简单密码译回原文的方法
  • 2017-05-28WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数详解
  • 2017-05-28深入理解goto语句的替代实现方式分析
  • 2017-05-28深入C语言把文件读入字符串以及将字符串写入文件的解决方法
  • 2017-05-28C++设计模式之享元模式

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Effective STL 18 avoid using vector<bool>
    • 浅析C语言中的数组及字符数组
    • c++ 构造函数中调用虚函数的实现方法
    • C语言编程中从密码文件获取数据的函数总结
    • C++ Assert()断言机制原理以及使用方法
    • 基于VC中使用ForceInclude来强制包含stdafx.h的解决方法
    • C++获得其他程序窗体控件中信息的方法
    • 解析设计模式中的Prototype原型模式及在C++中的使用
    • 探讨C语言的那些小秘密之断言
    • C语言实现去除字符串中空格的简单实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有