c++命名空间
来源:互联网 发布:农产品追溯软件 编辑:程序博客网 时间:2024/06/02 01:23
为什么需要命名空间?
命名空间是ANSI C引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突
什么是命名空间
所谓命名空间,实际上就是一个由程序设计者命名的内存区域。程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来,如
namespace ns1{int a;double b;}
说明:
1.a和b仍是全局变量,仅仅是把他们隐藏在命名空间中而已
2.用的时候要加ns1,比如ns1::a 这种用法叫 命名空间限定
3.声明一个命名空间时花括号内不仅可以包括变量,还可以包括以下类型
- 变量
- 常量
- 函数
- 结构体
- 类
- 模板
- 命名空间(可以嵌套)
4.可以为命名空间起一个别名
比如
namespace abcdefg{....}namespace ag = abcdefg;
5.存在无名的命名空间
namespace{...}
只在本文件中起作用
下面是例子
head1.h
#ifndef HEAD1_H#define HEAD1_Hnamespace ns1{int a=10;}#endif
head2.h
#ifndef HEAD2_H#define HEAD2_Hnamespace ns2{int a=12;}#endif
main.cpp
#include <iostream>#include "head1.h"#include "head2.h"using namespace std;int main(){ cout<<ns1::a<<endl; cout<<ns2::a<<endl; cout << "Hello world!" << endl; return 0;}
运行结果
标准命名空间
标准c++库的所有标识符都是在一个名为std的命名空间中定义的,或者说标准头文件(如iostream)中函数,类,对象和类模板是在命名空间std中定义的。
当用到标准头文件里的函数,类,对象时,可以在前面加上命名空间
std::out<<"hello"<<endl;
但是每个函数都加有些不方便,c++常用using namespace语句对命名空间std进行声明,这样就不必对每个命名空间成员进行处理,在文件的开头加入以下using namespace声明:
using namespace std;
这样,在std重定义和声明的所有标识符在本文件中都可以作为全局变量使用。
阅读全文
0 0
- C/C++:命名空间
- C++-namespace(命名空间)
- C++-namespace(命名空间)
- C++namespace命名空间
- C#.Net命名空间
- C++_命名空间
- C++namespace命名空间
- 【C++】命名空间
- [C++]namespace命名空间
- C\C++命名空间
- C++:命名空间(namespace)
- [c++]命名空间
- <C++>2.命名空间
- C语言命名空间详解
- C++Primer学习-命名空间
- 《C++Primer》读书笔记--命名空间
- C++std命名空间详解
- 《C++》15 C++ 命名空间
- 监督学习和无监督学习的区别
- 阿里巴巴开源项目 -- Druid
- MySQL学习笔记4——MySQL进阶操作2
- 面试70问 经典回答
- Ubuntu12.04升级git版本
- c++命名空间
- 高级面向对象 之 继承(拷贝继承)
- LeetCode Algorithms 78. Subsets 题解
- [Unity3D学习]3D数学基础之坐标系
- 两个字符串A、B,从A中剔除存在于B中的字符
- Spring mvc学习过程遇到的问题总结(1)
- ubuntu12.04更新源
- 平摊分析
- python TabError: Inconsistent use of tabs and spaces in indentation