C++:49---继承中的友元

本文探讨了C++中友元在继承关系中的特点:友元关系不继承,无传递性和交换性。基类友元无法访问派生类新增成员,但能访问继承成员;派生类的友元不能随意访问基类成员。文章通过实例进行说明。
摘要由CSDN通过智能技术生成

一、友元在继承中的关系

  • 我们在友元的文章中介绍过,友元关系不能继承。

  • (1)友元关系不存在传递性,即每个类负责控制自己的友元类或者友元函数;

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

  • (3)友元关系不能被继承。

  • 因此:

    • 基类的友元不能访问派生类的新成员,但是仍可以访问派生类从基类继承而来的成员/方法

    • 派生类的友元也不能随意访问基类的成员

二、演示案例

class A {private:int a;friend class C;};class B :public A {private:int b;};class C {public:int f(A a) { return a.a; };  //正确,因为C是A的友元,可以访问其任何成员int f2(B b) { return b.a; }; //正确,因为B继承了A,所以B中也包含了A的aint f3(B b) { return b.b; }; //错误,C不是B的友元,不能访问其私有成员};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值