** namespace:命名空间就是为解决C++中的变量、函数的命名冲突而服务的。

** namespace定义的格式基本格式是:

  namespace identifier
  {
      entities;
  }

  举个例子,
  namespace exp
  {
      int a,b;
  }

  为了在namespace外使用namespace内的变量,使用::操作符,如下

  exp::a
  exp::b

  使用namespace可以有效地避免重定义,

 #include <iostream>
using namespace std; namespace first
{
int var = ;
} namespace second
{
double var = 3.1416;
} int main () {
cout << first::var << endl;
cout << second::var << endl;
return ;
}

  结果是:
  5
  3.1416

  两个全局变量都是名字都是var,但是他们不在同一个namespace中所以没有冲突。

** using 关键字

  关键字using可以帮助从namespace中引入名字到当前的声明区域,

 #include <iostream>
using namespace std; namespace first
{
int x = ;
int y = ;
} namespace second
{
double x = 3.1416;
double y = 2.7183;
} int main () {
using first::x;
using second::y;
cout << x << endl;
cout << y << endl;
cout << first::y << endl;
cout << second::x << endl;
return ;
}
输出是 2.7183 3.1416
就如我们所指定的第一个x是first::x,y是second.y

  using也可以导入整个的namespace,

 #include <iostream>
using namespace std; namespace first
{
int x = ;
int y = ;
} namespace second
{
double x = 3.1416;
double y = 2.7183;
} int main () {
using namespace first;
cout << x << endl;
cout << y << endl;
cout << second::x << endl;
cout << second::y << endl;
return ;
}
输出是 3.1416
2.7183

** namespace也支持嵌套

 #include <iostream>

 namespace first
{
int a=;
int b=; namespace second
{
double a=1.02;
double b=5.002;
void hello();
} void second::hello()
{
std::cout <<"hello world"<<std::endl;
}
} int main()
{
using namespace first; std::cout<<second::a<<std::endl;
second::hello();
}
输出是
1.02
hello world

在namespace first中嵌套了namespace second,seond并不能直接使用,需要first来间接的使用。

** namespace 可以取别名

  在对一些名字比较长的namespace使用别名的话,是一件很惬意的事。但是与using相同,最好避免在头文件使用namespace的别名(f比first更容易产生冲突)。
namespace f = first;

最新文章

  1. enote笔记语言(1)
  2. SQL 2012 Group By Rollup, Grouping
  3. IOS遍历方式
  4. angularjs之插件ngRoute和ngAnimate
  5. Zipf定律
  6. ffmpeg-20160522-git-bin
  7. js 实现angylar.js view层和model层双绑定(改变view刷新 model,改变model自动刷新view)
  8. GPS(1)核心API及3种列出LocationProvider的方法
  9. UVa 10054 The Necklace BFS+建模欧拉回路
  10. iOS 通过个推 推送原理
  11. 微软Xbox360 E与微软Xbox360 slim Kinect套装(1TB)哪个好
  12. MySQL JDBC的queryTimeout坑
  13. div 宽高相等2种实现方式
  14. Selenium基础知识
  15. Keil提示premature end of file错误 无法生成HEX文件
  16. ModelForm
  17. 磁盘管理之 raid 文件系统 分区
  18. BZOJ 1097: [POI2007]旅游景点atr [DP 状压 最短路]
  19. 电信中兴F460光猫sendcmd命令
  20. MM-委外业务

热门文章

  1. php增加对mysqli的支持
  2. SpringMVC请求处理流程
  3. 通过关闭UseDNS和GSSAPIAuthentication选项加速SSH登录
  4. wx.html2.WebView在 target=&quot;_blank&quot; or rel=&quot;external&quot; 没有反映的解决方法
  5. UVALive 7267 Mysterious Antiques in Sackler Museum (判断长方形)
  6. ASP.Net核心对象之HttpResponse
  7. 在qq中可以使用添加标签功能
  8. (六)WebRTC手记之WebRtcVideoEngine2模块
  9. mysql如何修改表类型(表引擎)
  10. android 定时器的实现