条款32:确定你的public继承塑模出is-a关系

本文通过两个具体的类:Person和Student、Rectangle和Square,探讨了面向对象编程中继承的概念及其实现方式。文章强调了public继承等价于is-a关系,并讨论了这种继承关系可能带来的潜在问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class Person {...};

class Student: public Person {...};

我们从日常的经验知道每一个学生都是一个人,但并不是每一个人都是一个学生。这就是由这个继承体系严格确定的意义。

 

public inheritance 和 is-a 等价听起来简单,但有时你的直觉会误导你。

class Rectangle {...};

class Square: public Rectangle {...};

基本的难点在于一些适用于矩形(它的宽度可以独立于他的高度而自行变化)的事情不适用于正方形(它的宽度和高度必须相等)。但是 public inheritance 断言,适用于 base class objects(基类对象)的每一件事——每一件事!也适用于 derived class objects(派生类对象)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值