博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ namespace命名空间
阅读量:4702 次
发布时间:2019-06-10

本文共 3146 字,大约阅读时间需要 10 分钟。

1、什么是命名空间

简而言之:划片取名

加入有两个公司,公司A里面有一个员工小明,公司B里面有一个员工小明,两个公司在同一栋楼。这时,你去找小明,你再楼下大喊:“小明!你给我下来!”,这时两个小明都会下来,但是你如果喊:“A公司的小明,你给我下来”,这时下来的肯定就是A公司的小明了。而公司A和公司B就是命名空间。

2、程序中的命名空间

A软件公司:                                                  B软件公司:

  程序库里有:变量A             程序库里有:变量X

          函数f1                   函数f1

          函数f2                   函数f3

想一想:C软件公司如果购买了A公司和B公司的程序库,想使用A公司的变量 x,B公司的函数 f1 怎么办?

这个时候就用到了命名空间。

注意:命名空间的名字不能相同

3、怎样定义命名空间

命名空间关键字:namespace

namespace A        // A 就是空间的名称,也就是公司A的程序库{    int x = 0;     // 公司A程序库里面的 变量x    void f1();     // 公司A程序库里面的 函数f1()    void f2();     // 公司A程序库里面的 函数f2()}
namespace B        // B就是空间的名称,也就是公司B的程序库{    int x = 2;     // 公司B程序库里面的 变量x    void f1();     // 公司B程序库里面的 函数f1()    void f2();     // 公司B程序库里面的 函数f2()}

这个时候如果C公司调用A公司的变量和B公司的函数,代码应该怎么写呢?

cout << A::x << endl; // 调用A里面的变量x B::f1();              // 调用B里面的f1函数

4、代码实例

 (1)没有命名空间时的代码

#include
int main(void){ system("pause"); // pause 暂停 return 0;}

运行结果:

(2)cin,cout 的命名空间

#include
#include
// iostream 定义了std 命名空间using namespace std; // using 和 namespace 是关键字,调用命名空间std // std 是命名空间,里面包含cin , coutint main(void){ cout << "Hello" << endl; // 使用 cout 时需要命名空间 system("pause"); // pause 暂停 return 0;}

运行结果:

(3)模拟C公司调用A公司和B公司的代码

 情况一:

#include
#include
// iostream 定义了std 命名空间using namespace std; // using 和 namespace 是关键字,调用命名空间std // std 是命名空间,里面包含cin , cout// A 就是空间的名称,也就是公司A的程序库namespace A { int x = 0; void f1() { cout << "namespace A" << endl; }}// B 就是空间的名称,也就是公司B的程序库namespace B { int x = 2; void f1() { cout << "namespace B" << endl; }}int main(void){ cout << A::x << endl; // 调用A里面的变量x B::f1(); // 调用B里面的f1函数 system("pause"); // pause 暂停 return 0;}

情况二:

#include
#include
// iostream 定义了std 命名空间using namespace std; // using 和 namespace 是关键字,调用命名空间std // std 是命名空间,里面包含cin , cout// A 就是空间的名称,也就是公司A的程序库namespace A { int x = 0; void f1() { cout << "namespace A" << endl; }}// B 就是空间的名称,也就是公司B的程序库namespace B { int x = 2; void f1() { cout << "namespace B" << endl; }}// 如果这里直接使用using namespace B;那么下面可以直接调用B里面的函数。using namespace B; int main(void){ cout << A::x <

两种情况的运行结果一样:

5、实战练习

题目要求:

定义一个命名空间为myNum,在该命名空间中定义一个整型变量x,并给该变量赋值为105;使用C++新特性判断myNum命名空间下的变量是奇数还是偶数。

#include
#include
using namespace std;namespace myNum //填写命名空间的关键字{ int x = 105;}int main(){ // 使用bool类型定义isOdd,作为状态位 bool isFlag = false; if(myNum::x % 2 == 0) { //改变状态位的值,使其为false isFlag = false; } else { //改变状态位的值,使其为true isFlag = true; } // 判断状态位的值 if(true) { // 如果状态位的值为true,则打印变量x是奇数 cout << myNum::x << " 是奇数" << endl; } else { // 如果状态位的值为false,则打印变量x是偶数 cout << myNum::x << " x是偶数" << endl; } system("pause"); return 0;}

 运行结果:

 

转载于:https://www.cnblogs.com/chuijingjing/p/8996212.html

你可能感兴趣的文章
非常好的JSUI
查看>>
基于EasyNVR摄像机无插件直播流媒体服务器实现类似于单点登录功能的免登录直播功能...
查看>>
python学习0day
查看>>
课堂练习之检测水军
查看>>
函数指针的使用
查看>>
位图数据结构的操作
查看>>
azkaban用户管理及权限配置
查看>>
GCD学习笔记
查看>>
PHP......会话控制SESSION与COOKIE
查看>>
[转]AchartEngineActivity引擎绘制柱状图、曲线图
查看>>
[转]javascript实现限制上传文件的大小
查看>>
我的Java设计模式-策略模式
查看>>
C# 报表接口样例,简单实用
查看>>
C++常见内存错误及解决方案
查看>>
控制台应用程序窗口无法输入汉字解决办法
查看>>
Java中实现String.padLeft和String.padRight
查看>>
winCVS 使用的一个小要点
查看>>
一个关于session的问题
查看>>
加快开发时间的8个CSS的预处理程序
查看>>
dom元素高度、屏幕高度 获取
查看>>