虚函数与多态

文章探讨了函数的三种类型:非虚拟函数、虚拟函数和纯虚函数,以及它们在继承中的作用。通过形状与子类(如三角形、四边形)的例子,解释了纯虚函数的必要性。此外,提到了模板方法设计模式,允许父类实现大部分功能,而关键步骤由子类完成。文章还讨论了构造和析构函数的执行顺序,以及在继承和组合关系下的行为。最后,介绍了Observer设计模式,用于实现窗口状态的同步更新。
摘要由CSDN通过智能技术生成

函数分为三类:

  • non-virtual 函數:你不希望derived class 重新定義(override, 覆寫) 它.
  • virtual 函數:你希望derived class 重新定義(override, 覆寫) 它,且你對它已有默認定義。
  • pure virtual 函數:你希望derived class 一定要重新定義(override 覆寫)它,你對它沒有默認定義

举例,父类:形状,子类:三角形、四边形等

  • 画图是纯虚:因为形状无法定义画图
  • 打印错误信息:子类自己决定使用默认定义还是重新定义
  • ID:由父类统一分配

Template Method设计模式

父类先把能实现的都实现了,通过子类对象调用父类函数,将某一关键动作延缓到子类中去实现

 

 继承+复合关系下的构造和析构

  • 派生类中存在复合关系:

前后次序自己写cout输出观察、

  • 父类中存在复合关系:

前后次序显而易见:

                -构造由内而外:Derived 的構造函數首先調用Base 的default 構造函數,
然後調用Component 的default 構造函數,然後才執行自己。(why?

Derived::Derived(...): Base, Component() {...};

                 -析构由外而内:Derived 的析構函數首先執行自己,然後調用Component 的析構函數,然後調用Base 的析構函數。

Derived::~Derived(...){... ~Component(), ~Base()};

 委托+继承

observer设计模式

举例:office软件中打开多模式窗口,要求改动可以在各个窗口间同步

左边委托给observer,而observer作为父类可被继承

内容物(observer)在构造函数中通过attach注册到subje

notify:遍历所有observer,更新数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值