C++_Primer_chapter17 2.命名空间

本文探讨了C++中友元声明如何影响函数的作用域及如何在命名空间内使用未显式声明的友元函数。通过具体示例展示了类成员与命名空间的关系。

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

#include <iostream>
namespace ns {
	class Cls{
		/*
		 * 知识点1:
		 * 如果不存在可见的声明,那么,友元声明具有将该函数或类的声明放入外围作用域的效果
		 * 即:类Cls在命名空间ns内内部定义,则没有另外声明的友元函数fun相当于在命令空间内ns中声明,
		 * 如下列16行所示
		 */
		friend void print(const Cls& cls);
	public:
		Cls(int e) :elem(e) {}
	private:
		int elem;
	};
	//void print(const Cls& cls); // 已经隐式声明了,不需要再声明
}
void ns::print(const ns::Cls& cls) {
	std::cout << cls.elem<< std::endl;
}
void fun() {
	ns::Cls cls(0);
	/*
	 * 知识点2: 
	 * fun接受: 1)类类型实参并 2) 与类隐式声明在同一命名空间中,所以使用它无需使用using声明
	 */
	print(cls);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值