c++命名空间的使用

命名空间

​ c++中,名称可以是符号常量、变量、宏、函数等。为了避免在大规模程序的设计中,以及在程序员使用各种各样的c++库时,这些标识符的命名发生冲突。标准c++引入了关键字namespace(命名空间),能够更好地控制标识符的作用域。

​ 此外,std是c++标准命名空间,c++标准程序库中的所有标识符都被定义在std中,比如标准库中的类iostream、vector等都定义在该命名空间中,使用时要加上声明using namespace std,或者using指示(std::string、std::vector)。

  • 自定义一个命名空间:
namespace spaceA
{
    int g_a = 10;
}
int main(void)
{
    using namespace spaceA;
   
    //using spaceA::g_a
}
  • 如果命名空间再嵌套命名空间,必须引用到最里面的命名空间,或者会产生歧义;或者在命名空间里using space。
namespace spaceB
{
    namespace spaceC
    {
        struct teacher
        {
            int id;
            char name[64];
        }     
    }
    namespace spaceD
    {
        struct teacher
        {
            int id;
            char name[64];
        }     
    }
    
    //using namespace spaceC;
    //这一句可以令main函数声明spaceB的时候直接调用spaceC中的teacher
}
int main(void)
{
    //1.
    using spaceB::spaceC::teacher;
   	
    //2.
    //spaceB::spaceC::teacher t1;
    
    //3.
    //using spcaeB;
    //spaceC::teacher t1;
    
    //必须引用到最里面的命名空间
 	//using spaceB
    //teacher t1;//报错产生歧义,因为spaceB里面有spaceC和spaceD两个命名空间,同时包含teacher。
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值