c++ namespace的使用
2024-10-12 06:54:18
** 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;
最新文章
- enote笔记语言(1)
- SQL 2012 Group By Rollup, Grouping
- IOS遍历方式
- angularjs之插件ngRoute和ngAnimate
- Zipf定律
- ffmpeg-20160522-git-bin
- js 实现angylar.js view层和model层双绑定(改变view刷新 model,改变model自动刷新view)
- GPS(1)核心API及3种列出LocationProvider的方法
- UVa 10054 The Necklace BFS+建模欧拉回路
- iOS 通过个推 推送原理
- 微软Xbox360 E与微软Xbox360 slim Kinect套装(1TB)哪个好
- MySQL JDBC的queryTimeout坑
- div 宽高相等2种实现方式
- Selenium基础知识
- Keil提示premature end of file错误 无法生成HEX文件
- ModelForm
- 磁盘管理之 raid 文件系统 分区
- BZOJ 1097: [POI2007]旅游景点atr [DP 状压 最短路]
- 电信中兴F460光猫sendcmd命令
- MM-委外业务
热门文章
- php增加对mysqli的支持
- SpringMVC请求处理流程
- 通过关闭UseDNS和GSSAPIAuthentication选项加速SSH登录
- wx.html2.WebView在 target=";_blank"; or rel=";external"; 没有反映的解决方法
- UVALive 7267	Mysterious Antiques in Sackler Museum (判断长方形)
- ASP.Net核心对象之HttpResponse
- 在qq中可以使用添加标签功能
- (六)WebRTC手记之WebRtcVideoEngine2模块
- mysql如何修改表类型(表引擎)
- android 定时器的实现