c++命名空间
来源:互联网 发布:steam mac windows 编辑:程序博客网 时间:2024/06/06 17:58
命名空间主要解决命名冲突的问题。命名空间有程序员自己来存放任何东西,包括类、对象、函数、结构体等。下面简单的一个程序来说明命名冲突的问题。
int x =5;//自己单独的一个文件 "定义.h"
#include<iostream>#include "定义.h"using std::cout;using std::endl;int x=3;int main(){cout<<x<<endl;return 0;}
执行的结果:
由于定义了两个x,所以编译器不知道输出哪个,造成了命名冲突。
下面在来一个程序,说明如何使用命名空间:
#include<iostream>namespace func{const int cx = 20;const int cy = 50;class num{public:num();~num();void size(int a,int b);void swap(int rx,int ry);void compare(int ax,int ay);int returnX();int returnY();static int z;private:int x;int y;};}int func::num::z = 0;func::num::num(): x(0),y(0){}func::num::~num(){std::cout<<"析构函数执行...\n";}void func::num::size(int a,int b){if(a < func::cx && a > 0){x = a;}if(b< func::cx && b > 0){y = b;}}void func::num::swap(int rx,int ry){using std::cout;int temp;cout<<"交换前x 的值为:"<<rx<<" y的值: "<<ry<<"\n";temp = rx;rx = ry;ry = temp;cout<<"交换后x 的值为:"<<rx<<" y的值: "<<ry<<"\n";}void func::num::compare(int ax,int ay){using std::cout;if(ax < ay){cout<<"x 比y 小\n";}elseif(ax == ay){cout<<"x 等于y\n";}elsecout<<"x 大于y\n";}int func::num::returnX(){using std::cout;return x;}int func::num::returnY(){using std::cout;return y;}int main(){func::num num;num.size(14,15);num.compare(num.returnX() , num.returnY());num.swap(num.returnX() , num.returnY());std::cout<<"静态变量z的值为: "<<func::num::z<<"\n";return 0;}程序执行的结果是:
一、虽然很多代码都使用了using namespace std;
但这样做恰好与设置命名空间的初衷是相违背的,因为所有的名字都从命名空间中释放出来了。应该尽量避免使用using namespace std;而是采用std::out 、std::cin的形式。
二、尽量在命名空间之外定义函数,命名空间的成员都是共有的。
PS:博文匆匆,有不正确的地方,谢谢指正。
- 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++ 命名空间
- 解决NDK编译静态库时没反应
- C#导出Excel
- NOTIFYICONDATA
- Oracle常用傻瓜问题1000问
- Sencha Touch 2 入门 Demo 之一:搭建 Sencha Touch 2 的运行环境
- c++命名空间
- 安装Oracle后myEclipse不能正常使用之后
- SQL SERVER 2008 无法启动T-SQL调试的解决方法(亲自实践)
- 获取当前输入法
- 一次大规模网站攻击防御报告
- poj3348 求凸包面积
- oracle函数大全
- 解析HTML
- CentOs中安装Oracle的脚本文件