1.C艹+语言的面向对象特征 1.对象模型:继承 (3)采用基于继承的模型,还是基于指派的模型? C++是基于继承的模型 (4)允许多重继承?还是只允许单继承? C++允许单继承、多继承、多重继承和虚继承; 日c1assA 在单继承中,每个类可以有 多个派生类,但是每个派生 类只能有一个基类,从而形lasB: publicA 成树形结构; 图1单继承实例
1. C++语言的面向对象特征 1. 对象模型:继承 – (3) 采用基于继承的模型,还是基于指派的模型? – C++是基于继承的模型 – (4) 允许多重继承?还是只允许单继承? – C++允许单继承、多继承、多重继承和虚继承; 在单继承中,每个类可以有 多个派生类,但是每个派生 类只能有一个基类,从而形 成树形结构; 图1 单继承实例
1.C艹+语言的面向对象特征 1.对象模型:继承 (4)允许多重继承?还是只允许单继承? C++允许单继承、多继承、多重继承和虚继 承 日 class farmer{ 曰 class Person{ 日 class Worker E class Soldier: public Person[ F class Migrant: public Farmer, public Worker[Eclass Infrantryman: public Soldier[ 图2多继承实例 图3多重继承实例
1. C++语言的面向对象特征 1. 对象模型:继承 – (4) 允许多重继承?还是只允许单继承? – C++允许单继承、多继承、多重继承和虚继 承; 图2 多继承实例 图3 多重继承实例
1.C艹+语言的面向对象特征 1.对象模型:继承 (4)允许多重继承?还是只允许单继承? C++允许单继承、多继承、多重继承和虚继 承 白 class A{ C++使用虚拟继承,解决从不 publiC: int a 同途径继承来的同名的数据 成员在内存中有不同的拷贝aB8: virtual public A 造成数据不一致问题,将共 同基类设置为虚基类 Eclass C: virtual public 图4虚继承实例
1. C++语言的面向对象特征 1. 对象模型:继承 – (4) 允许多重继承?还是只允许单继承? – C++允许单继承、多继承、多重继承和虚继 承; C++使用虚拟继承,解决从不 同途径继承来的同名的数据 成员在内存中有不同的拷贝 造成数据不一致问题,将共 同基类设置为虚基类。 图4 虚继承实例
1.C艹+语言的面向对象特征 1.对象模型:多态 多态:是指同样的消息被不同类型的对象接收 时导致不同的行为。 虚函数 类属 多态 模板函数 重载 同名函数
1. C++语言的面向对象特征 1. 对象模型:多态 – 多态:是指同样的消息被不同类型的对象接收 时导致不同的行为。 多态 类属 重载 虚函数 同名函数 模板函数
1.C艹+语言的面向对象特征 1.对象模型:多态 日 class base ublic. virtual void Printo[ (1)类属:虚函数 cout<<Base: Print("<endl class Derive: public Base publi virtual void Print Oq at<< D Printo"<<endl 用父类的指针指向其子 类的实例,然后通过父 F int mainO( 类的指针调用实际子类 Derive derive Base *pBase =&derive 的成员函数,这种技术 return 0 可以让父类的指针有“ 多种形态”; Ci- C Windows\system32\cmd.exe Derive:: Print() 请按任意键继续
1. C++语言的面向对象特征 1. 对象模型:多态 – (1) 类属:虚函数 用父类的指针指向其子 类的实例,然后通过父 类的指针调用实际子类 的成员函数,这种技术 可以让父类的指针有“ 多种形态”;