12.虚函数与多态

1.inheritance with virtual functions(虚函数)
non-virtual函数:你不希望derived class(子类)重新定义它
virtual函数:你希望derived class重新定义它,且你对它已有默认定义
pure virtual函数:你希望derived class一定重新定义它,你对它没有默认定义
在函数声明的末尾加 = 0; 就能把它变成纯虚函数
子类重新定义就是你在子类里重新写一个同名函数,来实现“这个函数在子类这里应该有子类专属的行为”
image
这个类是形状
draw是纯虚函数,因为不知道是什么形状,画不出来,所以一定要重新定义
error是非纯虚函数,可能某个子类的error不一样,可以重新定义
objectID是非虚函数,每个子类都可以用,不需要重新定义

2.inheritance和composition关系下的构造和析构
image
构造顺序:从基类到派生类,从外到内(先构造继承的基类,再构造成员对象,最后构造自己)
析构顺序和构造完全相反:先析构自己,再析构成员对象,最后析构基类

posted @ 2026-01-06 14:48  r5ett  阅读(6)  评论(0)    收藏  举报