一,命名空间(namespace)的基本概念以及由来

1.什么是标识符:

  在C++中,标识符可以是基本的变量,类,对象,结构体,函数,枚举,宏等。

2.什么是命名空间:

  所谓的命名空间是指标识符的可见范围。C++标准库中的所有的标识符都被定义在一个名为std的命名空间中。

3.C语言的命名空间:

  在C语言中只有一个全局作用域,因此在C语言中所有的标识符共享一个命名空间,因此随着代码量的增大,标识符之间可能会重名。由此会造成一些命名问题。

4.针对C语言的问题,在C++中提出了命名空间的概念:

  1.命名空间将全局作用域划分成不同的的部分。

  2.不同的命名空间中的标识符可以重名而不会发生冲突。

  3.全局作用域也叫做默认命名空间。

  4.命名空间之间可以相互嵌套。

二,命名空间(namespace)的定义以及使用

1.命名空间的定义:

namespace 命名空间名称
{
......
}

2.命名空间的使用:

using namespace name; // 使用name这个命名空间
using namespace name::variable; // 使用name这个命名空间下的variable
std::cout << "Hello,NameSpace" << std::endl; // 直接使用这个命名空间中的标识符
::tmp = ; // 使用默认命名空间的变量,默认情况下可以直接使用默认命名空间的所有标识符

3.域作用符::

  域作用符用两个冒号(::)表示,用来访问命名空间下的标识符。

三,命名空间(namespace)实际案例

# include<iostream>

/* 定义命名空间n1 */
namespace n1
{
/* 定义学生类 */
class Student
{
public:
char name[];
int age;
};
/* 定义函数 */
void printN1()
{
std::cout << "我是n1命名空间的printN1()" << std::endl;
}
/* 定义命名空间n2 */
namespace n2
{
/* 定义变量n */
int n = ;
}
} // 在默认命名空间下定义变量a
int a = ; int main()
{
// 使用命名空间n1,曝光n1的所有标识符,因此可以调用printN1()函数
using namespace n1;
printN1();
// 使用命名空间n2,曝光n2的所有标识符,因此可以使用变量n
using namespace n1::n2;
// 直接使用指定命名空间下的标识符
std::cout << n << std::endl;
// 使用域作用符访问默认命名空间下的标识符
::a = -;
}

最新文章

  1. jQuery中取消后续执行的内容
  2. AdapterPattern(适配器模式)
  3. 配置apache apache服务器如何配置多站点
  4. Opencv Linux环境搭建
  5. rtsp实时流通过rtmp推送到服务端
  6. bzoj 1001: [BeiJing2006]狼抓兔子 平面图最小割
  7. 使用Lock实现信号量
  8. HDU - 5009 Paint Pearls(dp+优化双向链表)
  9. 安装logstash,elasticsearch,kibana三件套(转)
  10. ZOJ 1859 Matrix Searching(二维线段树)
  11. java 读取excel文件(只读取xls文件)
  12. mybatis-databaseIdProvider多数据库支持
  13. [COGS 2401]Time is Money
  14. html+css 制作简易导航栏
  15. siimpleHttpServer 快速建立一个文件服务器
  16. Android APK反编译(二)
  17. cordova网络情况检测插件使用:cordova-plugin-network-information
  18. Python学习—爬虫篇之破解ntml登陆问题
  19. linux 单引号,双引号,反引号的小总结。
  20. Docker(一)-Docker介绍

热门文章

  1. 消息队列——RabbitMQ学习笔记
  2. 【java】Naming.bind和Registry.bind区别
  3. 在 SAE 上部署 ThinkPHP 5.0 RC4
  4. Android 5.0 到 Android 6.0 + 的深坑之一 之 .so 动态库的适配
  5. js面向对象学习 - 对象概念及创建对象
  6. redis成长之路——(二)
  7. JavaScript求两个数字之间所有数字的和
  8. “风投云涌”:那些被资本看中的IT企业的风光与辛酸
  9. 简历生成平台项目开发-STEP1问卷设计
  10. 关系型数据库与NoSQL数据库