C++命名空间namespace

作用:避免变量或函数的命名冲突 

定义:

namespace 名字空间名{

名字空间成员1;

名字空间成员1;

......

}

注意:名字空间成员可以是全局函数、全局变量、类型、名字空间

 

实例

复制代码
#include <iostream>

namespace ns1 {
    void func() {
        std::cout << "ns1的func" << std::endl;
    }
}
namespace ns2 {
    void func() {
        std::cout << "ns2的func" << std::endl;
    }
}



int main()
{
    //func();   不能直接访问
    ns1::func();
    ns2::func();
  
    

    system("pause");  //暂停
}
复制代码

 

using namespace 名字空间名

 

复制代码
#include <iostream>



namespace ns1 {
    void func() {
        std::cout << "ns1的func" << std::endl;
    }
}
namespace ns2 {
    void func() {
        std::cout << "ns2的func" << std::endl;
    }
}



int main()
{
    using namespace ns1;
    func();  //可以省略ns1::
    ns2::func();
  
    

    system("pause");  //暂停
}
复制代码

 

复制代码
#include <iostream>

namespace ns1 {
    void func() {
        std::cout << "ns1的func" << std::endl;
    }
}
namespace ns2 {
    void func() {
        std::cout << "ns2的func" << std::endl;
    }
}



int main()
{
    using  ns1::func;
    func();  //可以省略ns1::
    ns2::func();
     

    system("pause");  //暂停
}
复制代码

 

复制代码
#include <iostream>

namespace ns1 {
    void func() {
        std::cout << "ns1的func" << std::endl;
    }
}
namespace ns2 {
    void func() {
        std::cout << "ns2的func" << std::endl;
    }
}



int main()
{
    using  ns1::func;  //声明方法一
    using namespace ns2;  //声明方法二
    func();  //执行的是ns1的func
    //以声明方法一为主


    system("pause");  //暂停
}
复制代码

 

名字空间的嵌套

复制代码
#include <iostream>

namespace ns1 {
    int num = 100;
        namespace ns2 {
            int num = 200;
            namespace ns3 {
                int num = 300;
            }
    }
}

int main()
{
    std::cout << ns1::ns2::num << std::endl;  //输出值200
    
    system("pause");  //暂停
}
复制代码

 

名字空间的合并

两个同名空间会自动合并,但两个空间中不能有同名成员或函数

复制代码
#include <iostream>

namespace ns1 {
    int unm = 100;
}
namespace ns1 {
    int unm1 = 200;
}

int main()
{
    std::cout << ns1::unm << std::endl;
    std::cout << ns1::unm1 << std::endl;
    
    system("pause");  //暂停
}
复制代码

 

 

 

 

 

posted @   天子骄龙  阅读(92)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-05-31 MFC-自定义消息
2020-05-31 pygame第一个简单程序
2020-05-31 pygame的安装
2020-05-31 python-pygame目录
2019-05-31 导数的四则运算
2019-05-31 基本初等函数的倒数
2019-05-31 不定积分概念与性质
点击右上角即可分享
微信分享提示