友元类和类中类的一些浅显理解与对比

本文深入解析C++中的友元概念,包括友元类和友元函数的特点及使用方式,以及类中类的访问权限特性。通过具体代码示例,展示了友元如何打破封装界限,以及内部类作为外部类的友元类可以访问其所有成员。

友元了,不管是友元类还是友元函数有应该特点是 比较鲜明的,这个特点就是不管是友元类还是友元函数他们具有一个单向的关系
你可以说a是b的友元,但是你无法说b是a的友元
看一个时间日期类来理解一下吧

class date;
class time{
	friend class date;
public:
	time(int hour, int minute, int second)
		:_year(hour)
		, _minute(minute)
		, _second(second)
	{

	}
private:
	int _year;
	int _minute;
	int _second;
};
class date{
public:
	date(int year, int month, int day)
		: _year(year),
		_month(month), 
		_day(day)   {}
	void getistime(int hour, int minute ,int second)
	{
		_t._hour = hour;
		_t._mintue = minute;
		_t._second = second;

	}
private:
	int _year;
	int _month;
	int _day;
	time _t;
};
int main()
{
	date d(1200, 1, 12);
	d.getistime(12, 18, 67);
	return 0;

}

再来看一下类中类吧
类中类外部类并没有什么优先的访问权限,更不能通过外部类去调用类不类
*内部类是外部类的友元类,内部类可以通过外部类的成员来访问外部类的所有成员

class A {
private:   
	static int k;   
	int h;
public:  
		class B{
public:       
	void foo(const A& a)      
	{
				
		cout << k << endl;//OK        
		cout << a.h << endl;//OK      
	}  
		};
};

int A::k = 1;
int main()
{	
	A::B b;  
	b.foo(A());    
	return 0; 
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值