C++语法之友元关系

类的友元

在C++学习中,经常会碰到对象之间有关系,但是使用类内函数的又不能很好的体现很好的类间的关系,普通函数又不能直接调用类内数数据,所以就有了友元关系。

友元函数

就用一个例子,来说明,这里我定义了一个Point类:

1785093-20190929133715203-1293630807.png
我的主要目的是为了求两点间的距离,所以主要用到的就是juli()函数,但是这样用的话就不能很好的体现这个距离,毕竟不是某个对象独有的,而是整个类的对象相互间存在的,于是就用到了友元函数。于是我就声明了一个与point类有关的友元函数,如图:
1785093-20190929135756403-47323071.png
但是为什么会报错呢?于是就发现friend只能在类内申明。在类外不允许使用!然后改成这样就行了:
1785093-20190929140215379-2083657396.png
运行结果如图,就是这样的:
1785093-20190929140443568-132803075.png

友元类

既然如此的话,那么能不能定义类间的友元关系呢,答案是可以的。还是刚刚的那个,我又定义了一个line类,用于直接调用point类的对象,这里就要说到友元类的定义方式了。

1785093-20190929141506744-1221965235.png
这里声明了B为A的友元类,也就意味着B中的所有成员函数都是A的友元函数,都可以访问A的私有和保护成员。
如图:
1785093-20190929151210071-431781550.png
这时运行如下程序:
1785093-20190929155439898-709300572.png
这是我遇到了一个问题:
1785093-20190929160057147-139627792.png
没找到原因,先结束这个话题,我找到原因后下期补上。

转载于:https://www.cnblogs.com/Xivie-cnblog/p/11608375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值