Day26

在强行别语言中我们必须先定义变数的型别,例如vector a(10); 一个int向量只能放int元素否则会出现错误,不像python的list可以随便放,但如果每个元素都继承同一个父类别就可以使用如同昨天所说的vector < Employee * > employees( 4 )将子类别SalariedEmployee, HourlyEmployee, CommissionEmployee与孙类别BasePlusCommissionEmployee都丢进同一个向量。

说道多型一定要讲这个老掉牙的解释,动物会发出声音如猫会喵喵叫狗会汪汪叫鸭子会呱呱叫,猫咪狗狗鸭子都是动物而且它们有不同的声音,所以我们创造一个父类别Animal但并不实作say()方法,等到猫咪继承时在去实作喵喵叫方法,狗狗与鸭子同理这就是多型。每一个人的解释都是Animal跟Hello World同等级的存在。 在Animal的类别中我们可以将一些共同的特性实作在父类别如每个动物都要呼吸都要睡觉都有所属的界门纲目科属种,并将一些特殊特性在父类别进行抽象化,等到子类别时才进行实作。

蚂蚁书在这边提出一个好玩的观点父类别可以丢给子类别指标,但子类别却无法丢给父类别的指标,用CommissionEmployee(父)与BasePlusCommissionEmployee(子)来说一但可以将子类别地址丢给父类别指标,那等於让CommissionEmployee(父)也得到setBaseSalary()方法,问题CommissionEmployee(父)在创建记忆体空间时并没有留下给setBaseSalary()方法的空间,导致记忆体复写到其他物件。所以出现禁止这种反向继承的规则。为避免上述问题例如下例子类别指标指向父类别是不被允许的,然而父类别指标可以指向子类别物件这就是向下转型(down casting)。

// Fig. 13.6: fig13_06.cpp
// Aiming a derived-class pointer at a base-class object.
#include "CommissionEmployee.h"
#include "BasePlusCommissionEmployee.h"

int main()
{
   CommissionEmployee commissionEmployee( 
      "Sue", "Jones", "222-22-2222", 10000, .06 );
   BasePlusCommissionEmployee *basePlusCommissionEmployeePtr = 0;

   // aim derived-class pointer at base-class object
   // Error: a CommissionEmployee is not a BasePlusCommissionEmployee
   basePlusCommissionEmployeePtr = &commissionEmployee;
   return 0;
} // end main



<<:  【PHP Telegram Bot】Day29 - 社群按赞机器人(1):让频道出现按赞按钮

>>:  Dungeon Mizarka 026

Day13-元件渐变语动画

渐变transition 这边就像写css一样,只是要渐变的东西包在transition里面,并到c...

TypeScript 能手养成之旅 Day 12 泛用型别(Generics Types)

前言 今天要来介绍 泛用型别,在我们前面介绍的 型别化名 ,而 泛用型别 就是将 型别化名 参数化,...

Day.25 「从 事件绑定 与 定时器 认识回调函式!」 —— JavaScript 定时器 & Callback

我们前面已经了解了事件绑定与事件冒泡了,但是使用 物件元素.绑定事件 有不方便的地方 只能同时为一...

Day2 网路是一堆电缆构成的,那网页呢?

大致了解网路是什麽之後,那每天逛的网页又是什麽呢? 什麽是网页? 网页是一份档案,通常会储存在服务器...

风险评估(Risk Evaluation)

-ISO 31000 本问题旨在推广 ISO 31000 风险评估的概念。年化预期损失 (ALE)...