c++中的友元和组合

文章目录

友元


  1. 类外部数据一般不可访问类私有成员,但如果在类中使用friend关键字声明外部某函数是其友元函数,那么就可以通过该函数函数访问到类中的私有成员,也可以在类A中声明另一个类C是其友元类,则在C中也可以访问到A中的私有成员,声明可以出现在类中的任意位置,当所声明的类C是在该类A的后面定义的,可以在类A之前作类C的前向声明 class C;(注意:类的前向声明只能用于友元声明需要、类指针以及类引用的声明需要,但在类定义出现之前仍不能声明类对象)
  2. 可以声明一个类的友元为某个外部函数、另一个类、另一个类的公有成员函数
  3. 友元类的声明不具有对称性,即类A声明类B是其友元,故在B中可以访问A中的私有成员,但在A中依旧不可以访问B的私有成员,除非在类B中也声明类A是其友元
  4. 友元类的声明不具有传递性,即类A声明类B为其友元,类B声明类C是其友元,故C可以访问B的私有成员,B可以访问A的私有成员,但是C仍然不能访问A的私有成员,除非A声明C也为它的友元
  5. 友元的声明不具有继承性,即基类声明的任何友元无法访问其派生类的私有成员

组合类


  1. 可以根据类中的不同功能部分分别定义为各个子类,然后再在主类中组合起来
  2. 组合类中的子类在定义时最好定义一个缺省参数的默认构造函数
  3. 组合与继承之间优先考虑组合
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值