cpp namespace

本文详细介绍了C++编程中namespace的作用,如何解决函数重名问题,以及不同类型的namespace(嵌套、不连续)使用方法。通过实例演示了如何正确调用来自不同命名空间的函数和变量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

namespace是用来干嘛的,考虑如下情况,
假如你写了一个函数abc(), 但是巧了,另一个库中也有一个函数叫abc(), 要怎么区别调用的到底是哪个abc()?
这时就需要namespace了,相当于提供了额外的信息以区分名字相同的函数,类,变量等。

namespace的用法如下

namespace namespace_name {
   // code declarations
}

假设命名空间的名字为name, 里面有个变量var,那么调用如下

name::var;

举个例子

#include <iostream>
using namespace std;

// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
}

// second name space
namespace second_space {
   void func() {
      cout << "Inside second_space" << endl;
   }
}

int main () {
   // Calls function from first name space.
   first_space::func();
   
   // Calls function from second name space.
   second_space::func(); 

   return 0;
}

output

Inside first_space
Inside second_space

不连续的namespace
namespace可能不在一个文件内定义,它的定义会分散于多个文件中,
而实际的namespace就是这些各个文件中定义的总和。

那么有个问题,在一个文件A的namespace中定义了a,又在另一个文件B中想调用这个a,那么就需要在文件B的namespace中声明这个a。

嵌套的namespace
比如namespace1中又定义了namespace2

namespace namespace_name1 {
   // code declarations
   namespace namespace_name2 {
      // code declarations
   }
}

调用的时候就像这样

// to access members of namespace_name2
using namespace namespace_name1::namespace_name2;

// to access members of namespace:name1
using namespace namespace_name1;

也可以用using namespace语句直接指定

#include <iostream>
using namespace std;

// first name space
namespace first_space {
   void func() {
      cout << "Inside first_space" << endl;
   }
   
   // second name space
   namespace second_space {
      void func() {
         cout << "Inside second_space" << endl;
      }
   }
}

using namespace first_space::second_space;
int main () {
   // This calls function from second name space.
   func();
   
   return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值