本笔记为GeekBand C++面向对象高级编程(上)第二周课程之总结。
组合与继承
组合(composition),类A has-a 类B

构造由内而外:

析构由外而内:

委托(Delegation)-- Composition by reference

pointer to implementation
继承(Inheritance)

类A is-a 类B
构造由内而外:derived的构造函数先调用base的构造函数,然后才执行自己
析构由外而内:derived的构造函数先执行自己,然后才调用base的析构函数
base的析构函数必须是虚函数,否则会出现undefined behavior
Inheritance with virtual function
* non-virtual:不希望derived重定义(override)它
* virtual:希望derived重定义(override)它,且已有默认定义
* pure-virtual:希望derived一定重定义(override)它,且没有默认定义
Inheritance + composition下的构造与析构

网友评论