【Cpp】命名空间

Cpp 的命名空间机制是用来解决复杂项目中名字冲突的问题。
例如,Cpp 标准库的所有内容都定义在 std 命名空间中,如果定了一个 cin 变量,则可以通过 cin 访问自定义的 cin 变量,通过 std::cin:: 是作用域操作符)访问标准库的 cin 对象,而不用担心产生冲突。

声明命名空间

用关键字 namespace 声明命名空间:

namespace 命名空间 {
    命名空间内部成员
}  

使用 命名空间::成员名;可以访问命名空间内的函数或变量。
举例:

#include <iostream>

namespace A {
    namespace B { //命名空间可以嵌套
        void func() {
            std::cout << "B" << std::endl;
        }
    }
    void func() {
        std::cout << "A" << std::endl;
        B::func();
    }
}

void func() {
    A::func();
    A::B::func();
}

int main() {
    func();
    return 0;
}

using 指令

声明了命名空间后,如果在命名空间外部访问命名空间内的成员,每次都要在成员名前面加上 命名空间:: 会很繁琐,using 指令可以简化这一操作。

//方式一:省略“某个”成员名前面的命名空间,直接通过成员名访问成员
using 命名空间::成员名;
//方式二:直接通过成员名访问命名空间内“任何”成员
using namespace 命名空间;

举例:

#include <iostream>

using std::cin;
//using namespace std;

int main() {
    int a;
    cin >> a;
    return 0;
}

注意:using 指令可能会造成命名冲突导致编译错误。

#include <iostream>

using namespace std;

int main() {
    int a, cin;
    //当有本地同名变量后,优先使用本地,cin 被认为是 int 型,编译错误
    cin >> a; 
    return 0;
}
posted @   hzyuan  阅读(51)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示