C++使用命名空间中成员的三种方式
通过简单的代码来介绍使用命名空间中成员的三种方式(我们最常用到的命名空间是是标准库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++使用命名空间中成员的三种方式的更多相关文章
- JavaScript中创建对象的三种方式!
JavaScript中创建对象的三种方式! 第一种 利用对象字面量! // 创建对象的三种方式! // 1 对象字面量. var obj = { // 对象的属性和方法! name: 'lvhang' ...
- javascript中构造函数的三种方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- c++中经常需要访问对象中的成员的三种方式
可以有3种方法: 通过对象名和成员运算符访问对象中的成员; 通过指向对象的指针访问对象中的成员; 通过对象的引用变量访问对象中的成员. 一.通过对象名和成员运算符访问对象中的成员 例如在程序中可以写出 ...
- 实现JavaScript中继承的三种方式
在JavaScript中,继承可以通过三种手法实现原型链继承 使用apply.call方法 对象实例间的继承. 一.原型链继承 在原型链继承方面,JavaScript与java.c#等语言类似 ...
- java找出1~1000中素数的三种方式
第一种: public class Sushu { public static void main(String[] args) { // TODO Auto-generated method stu ...
- Struts2学习(二)运行Action中方法的三种方式
1.运行execute()方法 一般的能够直接在action中书写execute,调用action时会自己主动运行此方法 2.配置method方法 在struts.xml中配置action时.写met ...
- selenium中延时等待三种方式
selenium中的延时等待方式有三种:强制等待:sleep() 隐示等待:implicitly_wait() 显示等待 WebDriverWait() 1.强制等待:sleep(),time模块 ...
- js中创建对象的三种方式
1. 对象字面量 var obj={ name:"小小", age:3, car:{ brand:"baoma", } }; } 2.使用内置构造函数 var ...
- Android - 页面返回上一页面的三种方式
今年刚刚跳槽到了新公司,也开始转型做Android,由此开始Android的学习历程. 最近在解很多UI的bug,在解bug过程中,总结了在UI的实现过程中,页面返回上一页面的几种实现方式. 一. 自 ...
随机推荐
- javascript iframe 操作(一)
[兼容所有浏览器 包括IE7/8/9] 1.父页面中获取IFRAME的WINDOW对象 获得了window对象后,就可以调用iframe页面中定义的方法等. IE:可以通过iframeId.windo ...
- lumen-Permission 权限管理使用心得
安装 composer require spatie/laravel-permission github上有详细介绍:https://github.com/spatie/laravel-permiss ...
- poj3096
C++的标准模版库的应用 Surprising Strings Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6625 ...
- php var_dump()函数的详解
说明:var_dump()方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型.显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值, ...
- Java基础 - 获取随机数
使用方法 package com.demo5; import java.util.Random; /* * 使用步骤: * A:导包 * import java.util.Random; * B:创建 ...
- 如何使用 Opencv dnn 模块调用 Caffe 预训练模型?
QString modelPrototxt = "D:\\Qt\\qmake\\CaffeModelTest\\caffe\\lenet.prototxt"; QString mo ...
- MySQL中myisam和innodb的主键索引有什么区别?
MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.下图是MyISAM索引的原理图: 这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索 ...
- python函数回顾:help()
描述 help() 函数用于查看函数或模块用途的详细说明. 语法 help 语法: help([object]) 参数说明: object -- 对象: 返回值 返回对象帮助信息. 实例 以下实例展示 ...
- Android系统移植与调试之------->Amlogic方案编译步骤
1. 拷贝Amlogic的SourceCode 切换目录到 /home/roco/work/amlogic/SourceCode/mx0831-0525下将mx0831-0525.tgz拷贝到 / ...
- android自定义控件(四)坐标系
1.局部坐标系(Local Coordinate) 所谓本地坐标系,就是坐标系以物体的中心为坐标原点,物体旋转.平移等操作都是围绕局部坐标系进行的.这时当物体模型进行旋转.平移等操作时, 局部坐标系也 ...