Derived
Base & Component
约 387 字大约 1 分钟
2025-09-06
non-virtual 函数:你不希望derived class 重新定义 (override, 覆写) 它.
virtual 函数:你希望derived class 重新定义 (override, 覆写) 它,且你对它已有默认定义。
pure virtual 函数:你希望 derived class 一定要重新定义 (override, 覆写) 它,你对它没有默认定义
详情见《Effective C++》条款34:区分接口继承和实现继承
前人实现了一个 CDocument ,把固定可以写的先写好,特殊化的操作留到 Serialize ,留给子类自己实现
CMyDoc 继承 CDocument ,仅需要根据自己的需求实现 Serialize 即可,这种写法是设计模式的Template Method。
Derived
Base & Component
构造由内而外,Derived 的构造函数首先调用 Base 的 default 构造函数,然后调用 Component 的 default 构造函数,最后才执行自己。
析构由外而内,Derived 的析构函数首先执行自己,然后调用 Component 的析构函数,最后调用 Base 的析构函数。
Derived
Base
Component
这种就比较直观,构造由内而外,析构由外而内