c++中的命名空间
来源:互联网 发布:重庆装修网络推广 编辑:程序博客网 时间:2024/06/07 00:42
命名空间
在C++中我们经常会碰到"using namespace"等字符,namespace就是命名空间,而using 属于声明;
1 命名空间的概念
C++中采用单一的全局变量的命名空间,如果在一个空间中,两个变量或函数的名字一样,编译的时候就会
冲突。命名空间就是为了解决C++中函数变量的命名冲突所采取的一种措施,能够解决多模块协同开发出现
变量函数命名的冲突问题。
在这里面可以把命名空间理解成文件夹,如果你在hel1这个文件夹中编辑两个hello.cpp肯定会出问题,但是如果
一个在hel1,一个在hel2这个文件夹中p,这个就不会出现冲突。
命名空间的必要性: 当程序比较大的时候,需要多人合作,命名空间就非常必要。
2 命名空间的定义
命名空间用namespace定义,格式如下:
namespace 命名空间名
{
命名空间生命内容
}
例:
#include <iostream>
using namespace std;
namespace nsA
{
void print()
{
cout<<"nsA"<<endl;
}
}
namespace nsB
{
void print()
{
cout<<"nsB"<<endl;
}
}
int main()
{
nsA::print();
nsB::print();
return 0;
}
3 命名空间成员的使用
3.1 using 声明
using声明可以出现在全局域和任意命名空间中,也可以出现在局部域中。
using namespace_name::name;
一旦使用using声明,就可以直接引用命名空间中的成员,而不需要再引用该成员的
命名空间。
命名空间std,这是最常用的命名空间,而不需要再引用该成员的命名空间。
#include <string>
#include <iostream>
using std::cin; //using声明,表明要引用标准库std中的成员cin;
using std::string; //using声明,表明要引用标准库std中的成员string;
int main()
{
string temp; //正确,string已经声明,可以直接使用
cin>>temp; //正确,cin已经声明,可以直接使用
cout<<temp; //错误,cout未声明,无法直接使用
std::cout<<temp; //正确,通过全名使用cout,
return 0;
}
在using 指令中,using后面必须跟关键字namespace,而且最后必须为命名空间名;
using 声明中,关键字后面没有namespace, 后面必须为命名空间的成员名。
3.2 using的作用域
#include <iostream>
using namespace std;
namespace nsA{
int var = 12;
}
namespace nsB{
double var = 12.33;
}
int main()
{
{
using namespace nsA; //using指令,使用nsA
cout<<"nsA var="<<var<<endl;
}
{
using namespace nsB; //using指令,使用nsB
cout<<"nsB var="<<var<<endl;
}
return 0;
}
在C++中我们经常会碰到"using namespace"等字符,namespace就是命名空间,而using 属于声明;
1 命名空间的概念
C++中采用单一的全局变量的命名空间,如果在一个空间中,两个变量或函数的名字一样,编译的时候就会
冲突。命名空间就是为了解决C++中函数变量的命名冲突所采取的一种措施,能够解决多模块协同开发出现
变量函数命名的冲突问题。
在这里面可以把命名空间理解成文件夹,如果你在hel1这个文件夹中编辑两个hello.cpp肯定会出问题,但是如果
一个在hel1,一个在hel2这个文件夹中p,这个就不会出现冲突。
命名空间的必要性: 当程序比较大的时候,需要多人合作,命名空间就非常必要。
2 命名空间的定义
命名空间用namespace定义,格式如下:
namespace 命名空间名
{
命名空间生命内容
}
例:
#include <iostream>
using namespace std;
namespace nsA
{
void print()
{
cout<<"nsA"<<endl;
}
}
namespace nsB
{
void print()
{
cout<<"nsB"<<endl;
}
}
int main()
{
nsA::print();
nsB::print();
return 0;
}
3 命名空间成员的使用
3.1 using 声明
using声明可以出现在全局域和任意命名空间中,也可以出现在局部域中。
using namespace_name::name;
一旦使用using声明,就可以直接引用命名空间中的成员,而不需要再引用该成员的
命名空间。
命名空间std,这是最常用的命名空间,而不需要再引用该成员的命名空间。
#include <string>
#include <iostream>
using std::cin; //using声明,表明要引用标准库std中的成员cin;
using std::string; //using声明,表明要引用标准库std中的成员string;
int main()
{
string temp; //正确,string已经声明,可以直接使用
cin>>temp; //正确,cin已经声明,可以直接使用
cout<<temp; //错误,cout未声明,无法直接使用
std::cout<<temp; //正确,通过全名使用cout,
return 0;
}
在using 指令中,using后面必须跟关键字namespace,而且最后必须为命名空间名;
using 声明中,关键字后面没有namespace, 后面必须为命名空间的成员名。
3.2 using的作用域
#include <iostream>
using namespace std;
namespace nsA{
int var = 12;
}
namespace nsB{
double var = 12.33;
}
int main()
{
{
using namespace nsA; //using指令,使用nsA
cout<<"nsA var="<<var<<endl;
}
{
using namespace nsB; //using指令,使用nsB
cout<<"nsB var="<<var<<endl;
}
return 0;
}
阅读全文
1 0
- c语言中的命名空间
- C/C++:命名空间
- C++中的命名空间
- C#中的命名空间
- MXML中的命名空间
- C++中的命名空间
- C++中的命名空间
- Javascript中的命名空间
- C++中的命名空间
- c#中的命名空间
- c#中的命名空间
- C++中的命名空间
- struts2中的命名空间
- PHP中的命名空间
- android中的命名空间
- PHP中的命名空间
- PHP中的命名空间
- C++中的命名空间
- 使用nodejs接入物联网完成图灵机器人对话
- Serializable接口
- Jar包中的文件下载(web层框架-Restlet)
- ODPS如何在客户端上追踪一个任务信息
- homebrew常用命令
- c++中的命名空间
- 详细介绍Spring Data
- findContours函数参数详解
- ConcurrentHashMap总结
- spring cache和ehcache
- Java中关于静态变量的一个问题
- SiteMesh页面装饰器的使用步骤
- redis那点事儿(三)
- 策略模式的实现的简单Demo