namespace命名空间

namespace命名空间

什么是命名空间?

  • namespace=命名空间

同一个名称在不同的命名空间中所指向的对象是不同的

为什么要使用命名空间?

防止标识符的命名发生冲突

你写的代码中定义了个fun()函数
所使用的类库中也包含了一个fun()函数
当你的代码中调用fun()函数时
程序:?到底用哪里的fun()函数?类库里面的还是你写的?

为了解决这问题,引入了命名空间(namespace)的概念

命名空间的使用

命名空间的创建和使用

#include<iostream>
using namespace std;
namespace first_space
{
    void func()
    {
        cout <<"这是在第一个命名空间"<<endl;
    }
}
namespace second_space
{
    void func()
    {
        cout<<"这是在第二个命名空间"<<endl;
    }
}
// 使用命名空间
int main()
{
    // 使用第一个命名空间的函数func()
    first_space::func();
    // 使用第二个命名空间中的函数func()
    second_space::func();
    // 不指定命名空间使用func()会怎么样? 会报错 因为编译器在当前的命名空间中找不到func()
    // func();

    return 0;
}

命名空间中using的用法

using namespace 命名空间名称;

使用指定的命名空间

#include<iostream>
using namespace std;
namespace first_space
{
    void func()
    {
        cout <<"这是在第一个命名空间"<<endl;
    }
}
namespace second_space
{
    void func()
    {
        cout<<"这是在第二个命名空间"<<endl;
    }
}
// 指定使用某个命名空间 这样就不用在前面加上命名空间的名字了
using namespace second_space;
// 指定使用第二个命名空间
int main()
{
    // 使用第一个命名空间的函数func()
    first_space::func();
    // 使用第二个命名空间中的函数func()
    func();
    // 因为已经指定了所以不需要详细的说明使用哪个命名空间
    return 0;
}

命名空间使用时的注意点

  • 先声明命名空间再使用

和函数一样 必须先声明后使用

//using namespace second_space; 错误的写法 因为这个时候second_space还没声明呢 不能使用
namespace second_space
{
    void func()
    {
        cout<<"这是在第二个命名空间"<<endl;
    }
}
using namespace second_space;//正确的写法 先声明后使用

小结

  • 用户可以自定义命名空间
  • 可以使用C++自带的命名空间
  • 命名空间和函数一样必须先定义后使用

参考链接

详解c++的命名空间namespace

C++ 命名空间 | 菜鸟教程

你可能感兴趣的:(C++,c++)