欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C++ 命名空间namespace详解

程序员文章站 2022-07-12 19:40:36
...

命名空间namespace

官方详细文档
C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。

因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围

因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的一切都被放在名字空间std中

如果你不加using namespace std; 而使用了cout,那编译器就不知道你用的是标准库中的cout还是你自己定义的cout,所以会出错

三种使用方式

法一:

  • using namespace std; 一次性打开std全部命名

法二:

  • using std::cin; 只打开std中的cin命名,之后用cin可直接写,但用cout等,需写std::cout

法三:

  • 不使用using语句,那么都要写明是哪个命名空间的,如std::cin,std::cout,std::endl;

示例

示例1:
C++ 命名空间namespace详解
使用了自己定义的max,输出3
C++ 命名空间namespace详解

示例2:

// 2020年1月29日 星期三 09:05:02
#include <iostream>
using namespace std; 
// C++标准程序库中的所有标识符都被定义于一个名为std的namespace中
// 这样我是要使用标准库中的cout,而不是其他地方的cout

// 第一个命名空间
namespace first_space {
    void func() {
        cout << "Inside first_space" << endl;
    }
}
// 第二个命名空间
namespace second_space {
    void func() {
        cout << "Inside second_space" << endl;
    }
}

using namespace first_space;

int main () {

    // 调用第一个命名空间中的函数
    func();
    // 输出:Inside first_space

    // 调用第一个命名空间中的函数
    second_space::func();
    // 输出:Inside second_space
    return 0;
}
相关标签: C++