C++笔记01 友元

C++笔记01 友元,第1张

C++笔记01 友元

当一个函数或者类A的函数想要访问类B的私有/保护成员的话,需要把类B的成员放到公共区域中,这样会违背当初的意愿。友元可以使函数和类A直接访问类B的私有/保护成员。

友元的特征:

             (1) 友元关系不能被继承,就像父亲的朋友未必是儿子的朋友。

             (2) 友元关系是单向的,不具有交换性。若类B是类A的友元,类A不一定是类B的友元,要看在类中是否有相应的声明。
             (3) 友元关系不具有传递性。若类B是类A的友元,类C是B的友元,类C不一定是类A的友元,同样要看类中是否有相应的申明

        友元能够使得普通函数直接访问类的保护数据,避免了类成员函数的频繁调用,可以节约处理器开销,提高程序的效率,但所矛盾的是,即使是最大限度大保护,同样也破坏了类的封装特性,这即是友元的缺点,在现在cpu速度越来越快的今天我们并不推荐使用它,但它作为c++一个必要的知识点,一个完整的组成部分,我们还是需要讨论一下的。   

可以将类A和普通函数作为类B的友元(注意友元是单向的),这个时候类A和函数PT()可以使用类B的私有/保护成员。

#include 
#include 
using namespace std;
class building{
	friend class goodgay;
	friend void goodbye(building *building1);
public:
	building(){
	sittingroom="keting";
	bedroom="woshi";
	}
public:
	string sittingroom;
private:
	string bedroom;
};


class goodgay{
friend  class building;
public:
	goodgay();
	void visit();
	building *build3;
};


goodgay::goodgay()
{
	build3 =new building;
}
void goodgay::visit()
{
	cout <<"goodgay访问"<bedroom<sittingroom<bedroom< 

结果:


参考链接:https://blog.csdn.net/adriano119/article/details/5914443
参考链接:https://blog.csdn.net/qq_35644234/article/details/52823589

 

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5714308.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存