GeekBand C++面向对象高级编程(三)

本笔记为GeekBand C++面向对象高级编程(上)第二周课程之总结。

组合与继承

组合(composition),类A has-a 类B

GeekBand C++面向对象高级编程(三)_第1张图片

构造由内而外:


析构由外而内:


委托(Delegation)-- Composition by reference


pointer to implementation

继承(Inheritance)


GeekBand C++面向对象高级编程(三)_第2张图片

类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下的构造与析构


GeekBand C++面向对象高级编程(三)_第3张图片

你可能感兴趣的:(GeekBand C++面向对象高级编程(三))