(一)区别:namespace作用是避免程序中的命名冲突,传统的C++程序是只有一个namespace,现在程序越来越复杂,为了防止程序员在合并不同程序时出现函数、类、结构体等命名的重复,所以用到命名空间,namespace包含类、函数、常量和模板声明等名字空间成员,例如:
namespace MyUnderstand
{
class info {
int number;
string name;
public:
void FristInstance (char *msg);
void SecondInstance(int Num);
};
}
(二)如何将namespace成员类分离成多个源文件呢?通过以下例子说明:
下面是名为example.h的头文件,其中定义了上面的名字空间MyUnderstand,它包含类info的声明,另外在一个单独的源文件example.cpp中,首先包含头文件example.h以便实现类info的成员函数FristInstance()和SecondInstance():
//example.cpp
#include "example.h"
void MyUnderstand::info::FristInstance ()
{ /*..*/ }
void MyUnderstand::info::SecondInstance()
{ /*..*/ }
要是用这个namesapce的成员,就必须使用这个成员在namespace中的路径,例如使用类info就要添加它的全路径名即MyUnderstand::info,这样就能够调用这个namesapce的类,相同的namespace中的函数调用也是如此。
(三)using指令由关键字“using namespace”后跟namesapce名字构成,在访问namesapce空间的成员时不建议经常使用,其原因是这种方法将所有namesapce空间成员注入当前的范围,从而增加了潜在的名字冲突。