通过简单的代码来介绍使用命名空间中成员的三种方式(我们最常用到的命名空间是是标准库std,下面的命名空间都以std为例):

  • 使用作用域符::
 1 #include<iostream>
 2 int main()
 3 {
 4 ////求两个数的和
 5 std::cout<<"Enter two numbers:"<<std::endl;
 6 int v1,v2;
 7 std::cin>>v1>>v2;
 8 std::cout<<"The sum of "<<v1<<" and "<<v2<<" is "<<v1+v2<<std::endl;
 9 return 0;
10 }

前缀std::指出名字cout和cin是定义在名为std的命名空间中的。使用这种方式有一个缺点:当使用标准库中的一个名字时,必须显式地说明我们想使用来自命名空间std中 的名字。例如,需要写出std::cout,通过使用作用域运算符::来指出我们想使用定义在命名空间std中的名字cout。此方法显得比较繁琐。

  • using声明

using声明的形式:

using namespace_name::member_name;

其中,using是关键字,namespace_name是你将要使用的命名空间的名字,比如标准库std,member_name是你要使用的命名空间里的成员,比如cin、cout、endl等。

 1 #include<iostream>
 2 ////using 声明,当我们使用名字cin时,从命名空间std中获取它
 3 using std::cin;
 4 int main()
 5 {
 6 int i;
 7 cin>>i;  /////正确,cin和std::cin含义相同
 8 cout<<i;  /////错误,没有对应的using声明,必须使用完整的名字std::cout
 9 std::cout<<i;  ///正确,显式地从std中使用cout
10 return 0;
11 }

注意:每个using声明引入命名空间中的一个成员,因此每个名字都需要独立的using声明
下面利用using声明重写第一个代码:

 1 #include<iostream>
 2 /////通过下列using声明,我们可以使用标准库中的名字
 3 using std::cin;
 4 using std::cout; using std::endl;
 5 int main()
 6 {
 7 cout<<"Enter two numbers:"<<endl;
 8 int v1,v2;
 9 cin>>v1>>v2;
10 cout<<"The sum of "<<v1<<"and"<<v2<<"is"<<v1+v2<<endl;
11 return 0;
12 }

有了using声明,无须专门的前缀(形如std::)也能使用所需的名字。在上述程序中,一开始就对cin、cout和endl进行using声明,这意味着我们不用再添加std::形式的前缀就能直接使用它们。

  • using 指示

using指示的形式:

using namespace NAME;

其中,using和namespace都是关键字,NAME是命名空间的名字,如std。如果这里所用的名字不是一个已经定义好的命名空间的名字,则程序将发生错误。

 1 #include<iostream>
 2 using namespace std;
 3 int main()
 4 {
 5 cout<<"Enter two numbers:"<<endl;
 6 int v1,v2;
 7 cin>>v1>>v2;
 8 cout<<"The sum of "<<v1<<"and "<<v2<<"is "<<v1+v2<<endl;
 9 return 0;
10 }

一条using声明语句一次只引入命名空间中的一个成员,而using指示使得某个特定的命名空间中的所有的成员都是可见的。
补充:如果命名空间名比较长,就会显得很繁琐,使用命名空间的别名为其设定一个较简单的同义词(或别名)。定义形式:

namespace primer = cplusplus_primer;

其中,namespace是关键字,primer是别名,cplusplus_primer是原来的名字。一个命名空间可以有多个同义词或别名,所有别名都与命名空间原来的名字等价。

转载于:https://www.cnblogs.com/cynthia-dcg/p/6022122.html

C++使用命名空间中成员的三种方式相关推荐

  1. 【opencv学习笔记】第五篇:访问图像中像素的三种方式、ROI区域图像叠加和图像混合

    1. 访问图像中像素的三种方式 任何图像处理算法,都是从操作每个像素开始的.在OpenCV中,提供了三种访问每个像素的方法. 方法1:指针访问:C操作符[] 方法2:迭代器iterator 方法3:动 ...

  2. 基于unet神经网络上采样中的的三种方式的理解

    关于前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容中的一个知识点-上采样. 一.基于unet神经网络上采样中的的三种方式的理解 ...

  3. Linux中软件自启动三种方式

    一.介绍 Linux环境中软件自启动的三种方式,测试环境为Centos7.三种方式为: 1.systemd服务 2.使用 /etc/rc.d/rc.local 3.使用crontab定时计划中的@re ...

  4. (二)js在html中调用的三种方式

    1. 行内式 <input type="button" value="唐伯虎" οnclick="alert('秋香姐')"> ...

  5. 简单了解计算机网络中数据传输的三种方式

    简单理解数据传输:计算机之间实现远程文件和多媒体信息获取和发送的行为. 准确理解数据传输:按照一定的规程,通过一条或者多条数据链路,将数据从数据源传输到数据终端,它的主要作用就是实现点与点之间的信息传 ...

  6. 【面试】JAVA中交换值的三种方式

    方式一:异或法 int i = 5, j = 9; i = i ^ j; j = i ^ j; -> j = i ^ j ^ j; -> j = i; i = i ^ j; -> i ...

  7. JS中创建对象:三种方式(pink)

    在 JavaScript 中,现阶段我们可以采用三种方式创建对象(object): (1)利用字面量创建对象 (2)利用new Object创建对象 (3)利用构造函数创建对象

  8. Android中XML的三种解析器分析、实战

    XML解析器介绍 Android中提供了三种方式来解析XML: SAX(simple API for XML) DOM(文档对象模型) 以及Android内部使用的Pull解析. SAX(simple ...

  9. java 时间戳 对比_Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System ...

最新文章

  1. R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点
  2. 口红竟超10000款,IT直男谁来拯救?(文末有惊吓)
  3. oVirt Reports Portal 3.4 added to ovirt-engine
  4. 他解决了物理学千年争端,成就肩比牛顿、爱因斯坦,但却鲜有人知......
  5. 光耦驱动单向可控硅_光耦是什麽?
  6. android richtext显示html,【报Bug】关于rich-text显示html 的问题
  7. 上海市职业介绍中心长宁分中心武夷路513-517号(021)62400032-229
  8. 小霸王被申请破产重整;虎牙员工自曝被HR抬出公司;Office 2010被微软终止服务|极客头条
  9. VB 一行代码的诀窍
  10. Redis在.net中的应用学习
  11. 中国统计年鉴2021(各省份经济指标,人口规模,工农业数据,主要社会经济指标)
  12. 【halcon】菜鸡入门,白纸黑点
  13. Nginx 配置域名
  14. 二选一多路器Verilog
  15. 新买的笔记本电脑分区,笔记本分区分错了怎么重新分
  16. 无法核实服务器证书,申请证书审核失败的原因及处理方法
  17. 《菩萨蛮·书江西造口壁》 辛弃疾
  18. Java刷题-蓝桥杯省赛第十一届JavaC组1---3
  19. Process finished with exit code 1 解决方法
  20. Python模块字典

热门文章

  1. CentOS下命令行和桌面模式的切换方法
  2. win7 旗舰版 截图工具不能使用 解决办法
  3. SELECT语句小结
  4. 小米手机 DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
  5. 给羊羔:学习web前端开发的路线(一)
  6. ASP.NET MVC4+BootStrap实战
  7. 《JavaScript DOM编程艺术》学习回顾4
  8. RandomAecessFile open failed: EISDIR (Is a directory)
  9. Android沉浸式模式状态栏(二)
  10. 第三周项目四-穷举法解决组合问题