C++ Exceptinal 类之间的关系

来考虑下两个类之间如下的关系:
1. “IS-A”: 描述两个类之间,其中一个类A属于另一个类B。类A出现的地方,都可以替换成类B,而不会出现问题,遵循LSP准则。这种情况下,两个类之间的关系就是子类和父类的关系,并且子类是public继承自父类的。
2. “IMPLEMENTED-IN-TERMS-OF”:描述两个类之间,其中一个类可以藉由另一个类的一些功能来实现。这种情况下,两个类之间的关系最好用包含的关系来组合。当然也可以使用非public继承来实现,但这种实现方式一般来说是不易采用的,只有当一些特殊情况下, 包含关系达不到某些特殊要求时,才利用这种继承。一些特殊情况如下:
(1). 我们需要重写一个虚函数。
(2). 我们需要对protected属性的成员具有访问权限。
(3). We need to construct the used object before, or destroy it after, another base subobject.
(4). We need to share a common virtual base class or overridd the construction of a virtual base class.
(5). 我们可以从’empty base class optimization’获利。也就是说当我们所用的类没有数据成员时,我们把当前类private继承自此类时,既可以利用此类的代码,又可以节省空间,因为继承是不占用空间的,而把它当做一个成员生命时,哪怕这个类没有数据成员,也要占据空间。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值