继承-虚函数

1.OOP
2.定义基类和派生类
可以将基类的指针或引用绑定到派生类对象上,
当使用基类的引用(或指针)时,实际上,我们并不清楚该引用(或指针)所绑定对象的真实类型。

静态类型static type:在编译时总是已知的
动态类型dynamic type:变量或表达式在内存中的对象类型,动态类型知道运行时才可知。

不存在从基类向派生类的自动类型转换。

派生类向基类的自动转换只对指针或引用类型有效,实际上是在调用某个函数。

当我们用一个派生对象为一个基类对象初始化或赋值时,只有该派生类对象中的基类部分会被拷贝、移动或赋值,它的派生类部分将被忽略掉。

想要理解在具有继承关系的类之间发生的类型转换:
1)从派生类向基类的类型转换只对指针或引用有效。
2)基类向派生类不存在隐式类型转换。
3)和任何其它成员一样,派生类向基类的转换也可能会由于访问权限受限而变得不可行。

3.虚函数

c++ 必须将基类的两种函数区别开
1)基类希望派生类进行覆盖的函数。–>虚函数–>动态绑定
2)基类希望派生类直接集成而不要改变的函数。
如果没有声明为虚函数,则解析过程发生在编译时而非运行时。

虚函数都必须有定义:
我们必须为每一个虚函数都提供定义,而不管它是否被用到了,这是因为连编译器也无法确定到底会使用哪个虚函数。

文章目录
,