C++命名空间应用

Posted Linux编程学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++命名空间应用相关的知识,希望对你有一定的参考价值。

6 命名空间的应用

在C++中,使用“命名空间”,是为了更好地管理代码。例如,程序员A定义了一个处理字符串的string类,程序员B定义了一个处理字符串的string类。那么,都是同样的类名string,但是,功能可能不同,所以,打算使用程序员A定义的string类时,会造成与程序员定义的string类产生冲突。

那么,我们一般的解决方法是定义成不同的类名,例如程序员A定义的类是string_A,,程序员B定义的类是string_B,这样,够避免类名相同产生的冲突。但是,当开发大型软件项目,多个程序员同时协同开发的时候,这种方式不可以解决实际的问题。

那么,在C++语言中,支持的了“命名空间”的机制,可以把我们编写的代码封装到一个命名空间中,当我们想使用其中的代码时,该命名空间就可以了。所以,对于程序员A定义的代码,封装到一个命名空间 namespace_A 中,对于程序员B定义的代码,封装到一个命名空间namespace_B中。那么,想使用程序员A定义的string类是,引入 namespace_A命名空间定义的代码就可以了。

在C++中,我们可以使用 namespace 关键字来定义一个命名空间,如下:

//定义命名空间

namespace wkf

//在这里存放命名空间内定义的代码

可以使用using namespace 命名空间; 这样的格式来引用命名空间,如下:

using namespace wkf; //引用定义的wkf 命名空间

如下是一个测试的例子:

(1) 创建一个头文件,名称是 wkf_max.h ,文件中的定义如下:

//定义命名空间

namespace wkf

inline int const& max_test(int const& a, int const& b)

return a > b ? a: b;

(2) 定义一个 .cpp 文件,编写 main(); 函数来执行程序,在该文件中,需包含 wkf_max.h 文件,并引入 wkf 这个命名空间,如下:

#include "wkf_max.h"

using namespace wkf; //引用定义的wkf 命名空间

(3) 应用 wkf 命名空间中定义的 max(); 函数。注意了:对于 max(); 函数,已经在系统中定义过来,包含着系统定义的 std 命名空间中。

所以,我们打算自己定义在wkf 命名空间中的 max(); 函数,就必须使用“命名空间 ::” 这样的格式来调用命名空间中定义的函数,如下:

int main(void)

std::cout << "wfk::max(1, 2) = " << wkf::max(1, 2) << endl;

std::cout << "std::max(2, 3) = " << std::max(2, 3) << endl;

return 0;

程序运行的结果如下:

wfk::max(1, 2) = 2

std::max(2, 3) = 3

所以,我们同时引入wkf, std命名空间,那么,wkf命名空间中定义的max()函数与std命名空间中定义的max()函数同名。此时,我们可以通过域作用符来指定引用那个命名空间下的max()函数。

以上是关于C++命名空间应用的主要内容,如果未能解决你的问题,请参考以下文章

C++命名空间应用

C→C++打开C++世界的大门

如何移除网站Response Headers中的X-Powered-By信息?

X-Powered-By中的Express在哪个地方能改呢

C++ 命名空间,与 Java 包的比较

C++命名空间