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

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

前缀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等。

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

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

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

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

  • using 指示

using指示的形式:

using namespace NAME;

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

 #include<iostream>
using namespace std;
int main()
{
cout<<"Enter two numbers:"<<endl;
int v1,v2;
cin>>v1>>v2;
cout<<"The sum of "<<v1<<"and "<<v2<<"is "<<v1+v2<<endl;
return ;
}

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

namespace primer = cplusplus_primer;

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

C++使用命名空间中成员的三种方式的更多相关文章

  1. JavaScript中创建对象的三种方式!

    JavaScript中创建对象的三种方式! 第一种 利用对象字面量! // 创建对象的三种方式! // 1 对象字面量. var obj = { // 对象的属性和方法! name: 'lvhang' ...

  2. javascript中构造函数的三种方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. c++中经常需要访问对象中的成员的三种方式

    可以有3种方法: 通过对象名和成员运算符访问对象中的成员; 通过指向对象的指针访问对象中的成员; 通过对象的引用变量访问对象中的成员. 一.通过对象名和成员运算符访问对象中的成员 例如在程序中可以写出 ...

  4. 实现JavaScript中继承的三种方式

    在JavaScript中,继承可以通过三种手法实现原型链继承 使用apply.call方法 对象实例间的继承.     一.原型链继承 在原型链继承方面,JavaScript与java.c#等语言类似 ...

  5. java找出1~1000中素数的三种方式

    第一种: public class Sushu { public static void main(String[] args) { // TODO Auto-generated method stu ...

  6. Struts2学习(二)运行Action中方法的三种方式

    1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写met ...

  7. selenium中延时等待三种方式

    selenium中的延时等待方式有三种:强制等待:sleep()  隐示等待:implicitly_wait()  显示等待 WebDriverWait() 1.强制等待:sleep(),time模块 ...

  8. js中创建对象的三种方式

    1. 对象字面量 var obj={ name:"小小", age:3, car:{ brand:"baoma", } }; } 2.使用内置构造函数 var ...

  9. Android - 页面返回上一页面的三种方式

    今年刚刚跳槽到了新公司,也开始转型做Android,由此开始Android的学习历程. 最近在解很多UI的bug,在解bug过程中,总结了在UI的实现过程中,页面返回上一页面的几种实现方式. 一. 自 ...

随机推荐

  1. Apache thrift - 使用,内部实现及构建一个可扩展的RPC框架

    本文首先介绍了什么是Apache Thrift,接着介绍了Thrift的安装部署及如何利用Thrift来实现一个简单的RPC应用,并简单的探究了一下Thrift的内部实现原理,最后给出一个基于Thri ...

  2. C++编译过程与内存空间

     为什么须要知道C/C++的内存布局和在哪能够能够找到想要的数据?知道内存布局对调试程序很有帮助,能够知道程序运行时,究竟做了什么,有助于写出干净的代码.本文的主要内容例如以下: 源文件转换为可运 ...

  3. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)3.2——设置Flavors和Variants

    问题: 需要构建大体上一样,但是使用不同资源或者类的应用. 解决方案: 产品的flavors可以帮助你对同一个app创建不同的版本. 讨论: build types是开发过程的一部分,一般用来将app ...

  4. 【BZOJ2325】[ZJOI2011]道馆之战 线段树+树链剖分

    [BZOJ2325][ZJOI2011]道馆之战 Description 口袋妖怪(又名神奇宝贝或宠物小精灵)红/蓝/绿宝石中的水系道馆需要经过三个冰地才能到达馆主的面前,冰地中的每一个冰块都只能经过 ...

  5. 类 String、StringBuffer、StringBuilder

    类 String String 类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.字符串是常量:它们的值在创建之后不能更改.字符串缓冲区支持 ...

  6. VMware虚拟机不能联网的解决办法

    Linux安装的centos系统,不能正常连接网络 1.编辑config文件 [root@localhost ~]# cd /etc/selinux [root@localhost selinux]# ...

  7. 算法训练 s01串

    问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据规模和约定 0~ ...

  8. Oracle学习笔记—数据库,实例,表空间,用户、表之间的关系

    之前一直使用的关系型数据库是Mysql,而新公司使用Oracle,所以最近从网上搜集了一些资料,整理到这里,如果有不对的地方,欢迎大家讨论. 基本概念: 数据库:Oracle 数据库是数据的物理存储. ...

  9. Java基础—数据类型

    Java的两大数据类型 基本数据类型 引用类型 Java程序中,new出来的对象存储在堆中(引用类型),但当使用new创建一个小的.简单的对象时,往往不是很有效,所以对于这些类型,Java不用new来 ...

  10. New Moto X 2014 全版本RSD&Fastboot刷官方底包教程

    本来我是不想写教程的,因为这样的教程实在是太多了,基本上大家也都会了,为什么还要多次一举,发来发去的呢?实在没什么意义!但是我觉得吧,别人的教程写的都太过简单,太过明了了,有时候我们很难理解,这到底是 ...