
第10章 揭秘继承技术
文章平均质量分 72
D.J. Wu
Ciallo~(∠・ω< )⌒☆
展开
-
10.3利用父类
编写派生类时,需要知道父类和派生类之间的交互方式。创建顺序、构造函数链和类型转换都是潜在的 bug来源。原创 2024-07-15 21:45:46 · 331 阅读 · 0 评论 -
10.4继承与多态性
纯虚方法(pure virtual methods)在类定义中显式说明该方法不需要定义。如果将某个方法设置为纯虚方法,就是告诉编译器当前类中不存在这个方法的定义。具有至少一个纯虚方法的类称为抽象类,因为这个类不能被实例化。如果派生类没有实现从父类继承的所有纯虚方法,那么派生类也是抽象的,客户就不能实例化派生类的对象。抽象类提供了一种禁止其他代码直接实例化对象的方法, 而它的派生类可以实例化对象。对于实现抽象基类所有纯虚方法的派生类, 可以使用基类的指针指向派生类.原创 2024-07-15 21:46:58 · 229 阅读 · 1 评论 -
10.1使用继承构建类
把数据成员默认设置为 private 的原因是,这会提供最高级别的封装,这意味着可以改变数据的表示方式,而保持 public 或 protected 的接口不变。**每个具有一个或多个虚方法的类都有一张虚表,这种类的每个对象都包含指向虚表的指针,这个虚表包含指向虚方法实现的指针。即使基类的引用或指针知道这实际上是一个派生类,也无法访问没有在基类中定义的,定义在派生类中的方法或成员。为了重写某个方法,需要在派生类的定义中重新声明这个方法,就像在基类中声明的那样,但是需要添加关键字。原创 2024-07-15 21:44:12 · 625 阅读 · 0 评论 -
10.6有趣而晦涩的继承问题
如果一个类同时从两个或多个路径继承自同一个基类,而这个基类的某些成员在多条路径上被多次继承,那么派生类中就会存在多个这样的成员的副本,从而导致不明确的引用。如果一个基类的某个构造函数与另一个基类的构造函数具有相同的参数列表,就不可能从基类继承构造函数,因为那样会导致歧义。)初始化对象的父类部分。与所有的重写一样,此时Derived类的构造函数的优先级高于继承的构造函数。总结来说,虚基类的作用是解决多继承中的二义性问题,确保在派生类中只继承一份共享基类的成员,从而实现了更清晰的继承关系和避免潜在的错误。原创 2024-07-16 22:38:59 · 764 阅读 · 0 评论 -
10.5多重继承
多重继承通常被认为是面向对象编程中一种复杂且不必要的部分。请判断多重继承是否有用,本节将阐述C++中多重继承的机制。原创 2024-07-16 22:35:47 · 171 阅读 · 0 评论 -
10.7类型转换
类似,但它会创建一个指定目标类型的新对象,并按位从源对象复制到此新对象。它有效地将源对象的位解释为目标对象的位。的一个用例是普通可复制类型的二进制I/O。比如,可以将此类型的各个字节写入文件。如果没有可用的转换构造函数,则无法将一种类型的对象直接。提供了对继承层次结构中的强制转换的运行期检查。基本上,根据C++的类型规则,不能做任何没有意义的事情。执行显式转换,这是用户定义的构造函数或转换例程允许的。要求源对象和目标对象的大小相同,并且两者都是可复制的。类型的指针只是指向内存中的某个位置。原创 2024-07-16 22:40:39 · 364 阅读 · 0 评论