-------------------------------------------第1部分:为什么使用namespace-------------------------------------------
namespace既“命名空间”,也称“名称空间” VS.NET中的各种语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 同时也是VS.NET中所有类的完全名称的一部分
如同名字一样的意思,NameSpace:名字空间,之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了,为了解决这个问题,引入了名字空间这个概念,通过使用using namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的.这样一来就不会引起不必要的冲突了.
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一 :
二: 所谓namespace,是指标识符的各种可见范围。 C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下: std::cout << std::hex << 3.4 << std::endl;
2、使用using关键字。 using std::cout; using std::endl; using std::cin; 以上程序可以写成 cout << std::hex << 3.4 << endl;
3、最方便的就是使用using namespace std; 例如: #include#include #include using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写: cout < -------------------------------------------第2部分:举例说明怎样使用namespace------------------------------------------- 98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。 举一个实例,请注意以下两个头文件: // one.h char func(char); class String { ... }; // somelib.h class String { ... }; 如果按照上述方式定义,那么这两个头文件不可能包含在同一个程序中,因为String类会发生冲突。 所谓命名空间,是一种将程序库名称封装起来的方法,它就像在各个程序库中立起一道道围墙。 源代码: 转载自:http://hi.baidu.com/vc_net/item/e1d6274d56f19bea1f19bc46
#include
#include
using namespace std;
namespace std_1 //2个命名空间将相同的函数名隔离开
{
void cout_cout( );
}
namespace std_2
{
void cout_cout( );
}
void cout_cout_cout( );//全局变量,唯一的.其它类中不能定义相同的名,否则会报错
int _tmain(int argc, _TCHAR* argv[])
{
{//此括号必须用,否则2个命名空间会冲突
using namespace std_2;
cout_cout( );
}
{
using namespace std_1;
cout_cout( );
}
cout_cout_cout( ); //使用了std一个标准命名空间
return 0;
}
namespace std_1
{
void cout_cout( )
{
cout << "命名空间1\n"<
}
namespace std_2
{
void cout_cout( )
{
cout << "命名空间2\n"<
}
void cout_cout_cout( )
{
cout << "全局函数!\n";
}