栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++笔记01 友元

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/717990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号