<C++>2.命名空间
2017-10-02 00:15
337 查看
2、命名空间
一、命名空间的作用
一个软件通常是由多个开发人员合作完成,难免会产生命名重复的问题。命名空间帮助开发人员在开发新的软件组件或模块时不会与已有软件组件或者模块产生标识命令冲突,从而解决了程序中同名表示符存在的潜藏危机。
二、命名空间的定义
namespace 命名空间标识符{
成员的声明;// 例如类、对象、函数、变量以及结构体等。
}
例:
namespace WSG { int a; void func(); struct student { int age; char *name; }; }
注意:与类不同,命名空间完后不需要加分号“;”。
三、命名空间的使用
1、直接指定标识符
命名空间表示符名::成员名例:
namespace num { int x = 20; int y = 20; } cout<<num::a<<endl;
2、使用using namespace 命令:可以引用命名空间中的所有成员。
例:#include <iostream> using namespace std; namespace num { int x = 20; int y = 20; } using namespace num; int main(void) { cout<<x<<endl; cout<<y<<endl; return 0; }
注意:当使用using namespace同时声明两个以上命名空间时,且这些命名空间内有同名变量,对同名变量的调用需要使用“命名空间::”进行限定。没有冲突的成员可以直接使用。
3、使用using 关键词声明
一个using每次只能引用单个成员。例:
namespace Test { void print(){cout<<"hello"} } using Test::print();
建议使用第1种方法,不容易出错。
四、说明
1、命名空间标识符名所在定义域中是唯一的。2、命名空间作用域不能以分号结束。
3、命名空间可以在全局作用域或其它作用域内部定义,但不能在函数内部或者类内部定义。
4、命名空间和类、结构体类似,但不能实例化,只能引用。
5、命名空间的成员都是公有的,不能对其进行私有化。
6、命名空间可以嵌套使用。这种情况下,调用成员需要加上所有的命名空间标识符名。如:cout<<A::B::x<<endl;
相关文章推荐
- <转载>C++命名空间
- C++反汇编->类,结构体,命名空间分析
- <高质量C>C++/C命名规则
- 每日学习心得:未定义的命名空间前缀"xsd"问题和<%%>、<%=%>、<%$%>、<%@%>的区别
- 2,3 c++中 #include< >头文件 和 命名空间 Using namespace std的解释和区别
- <C/C++>指针在什么时候需要申请内存空间?
- Spring + MyBatis + Ehcache 整合 CacheManager 版本>2.5,命名空间冲突 解决
- C++中的命名空间(namespace)
- <转>标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast
- <C++>11.构造函数
- C++匿名命名空间
- C++ Studio( 一 ) ----------- <stdlib.h> atoi() --------- 将string转换为int型
- C++中命名空间的意义和用法
- 如何在C#中调用C++或者VB中的命名空间
- c++中的命名空间
- C++下的命名空间
- <Effective Mordern C++>笔记:Item 8:prefer nullptr to 0 and NULL.
- C++ using namespace std 详解 与 命名空间的使用
- <C++>面试
- C++中 auto自动变量,命名空间,using作用以及作用域