47.命名空间namespace

本文深入探讨了C++中命名空间的概念与应用,包括命名空间的作用域、内联命名空间的特性、未命名命名空间的生命周期,以及如何解决命名冲突和函数重载引起的二义性问题。通过实例展示了命名空间的别名使用,以及在不同命名空间中定义相同函数名的处理方式。

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

每个命名空间就是一个作用域。

命名空间是不连续,存在则追加,不存在则创建

内联命名空间,可以使得最外层的命名空间直接使用内层任何一层的成员名字,而无需添加中间层的命名空间的名字

未命名的命名空间中定义的成员具有静态生命周期,声明时创建,程序结束时销毁。内层未命名的命名空间可以直接使用外层命名空间的名字直接访问成员。

命名空间的别名

namespace abcdefj{

void hhhh() {std::cout<<"hello"<<std::endl;}};

namespace b = abcdefj;

b::hhhh();

命名空间与函数重载与二义性。

namespace a {
	namespace {
		void print(std::string &&s) { std::cout << "namespace::print" << std::endl; }
	}

	void print() { std::cout << "a::print" << std::endl; }

}

namespace b {

	void print(int &s) { std::cout << "b::print" << std::endl; }
}

namespace c{

	using namespace a;
	using namespace b;
	void print(double &&s) { std::cout << "c::print" << std::endl; }
}

int main()
{
	using namespace c;
	print("meiyusb");
	print(2.3);
	system("pause");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值