文档详情

C++面向对象程序设计复习提纲[精].ppt

发布:2017-01-17约8.83千字共60页下载文档
文本预览下载声明
* * * * * * * * * * * * * 5.2 派生类的声明方式 派生类的声明格式: class 派生类名: [继承方式] 基类名 { 派生类新增成员声明 } ; 继承方式包括: public、private(系统默认)、protected。 举例: 已经声明一个基类student,在它基础上通过单继承建立一个增加了“年龄”的派生类student1。 5.3 派生类的构成 派生类中的成员包括从基类继承过来的成员和自己增加的成员。 构成部分 派生类 Student1 成员类型 接收成员 数据成员 num, name, sex 基类成员 成员函数 display() //可以重载 新增成员 数据成员 age 派生类成员 成员函数 display_1() 构造函数 需重新定义 5.5.1 简单的派生类的构造函数 何为简单派生类? 只有一个基类,只有一级派生; 派生类数据成员中不包含基类的对象(子对象)。 构造函数格式: 派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(基类参数表) { 本类成员初始化赋值语句; }; 说明:基类所需的形参,基类参数表 一一对应 例5.5 简单派生类的构造函数 #includeiostream #include string using namespace std; class Student //声明基类 {public: //公用部分 Student(int n,string nam,char s ) //基类构造函数 {num=n; name=nam; sex=s; } ~Student( ) { } //基类析构函数 protected: //保护部分 int num; string name; char sex ; }; test51 class Student1: public Student // 声明公用派生类 { public: Student1(int n,string nam,char s,int a,char ad[ ] ): Student ( n,nam,s) // 派生类构造函数 { age=a; // 只对派生类新增的数据成员初始化 addr=ad; } void show( ); private: // 派生类的私有部分 int age; string addr; }; 执行构造函数的顺序是(析构函数相反): ①派生类构造函数先调用基类构造函数; ②再执行派生类构造函数本身。 即先初始化num,name,sex,然后再初始化age和addr 5.6 多重继承 5.6.1 声明多重继承的方法 5.6.2 多重继承派生类的构造函数 5.6.3 多重继承引起的二义性问题 5.6.4 虚基类 为何要用多重继承? 如:定义一个沙发床类 5.6.3 多重继承引起的二义性问题 多重继承最常见的问题是二义性问题。 二义性问题分类: 在多重继承时,基类与派生类之间,或基类之间出现同名成员时,将出现访问时的二义性(不确定性)——采用同名隐藏规则(5.6.3)来解决。 当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生二义性——采用虚基类(5.6.4)来解决。 同名隐藏规则 当派生类与基类或基类之间有相同成员时, 访问派生类中的同名成员方法: 派生类对象.同名成员名 访问基类中被覆盖的同名成员方法: 派生类对象.基类名::同名成员名 1.虚基类的作用 作用 派生类在继承间接共同基类时只保留一份成员,从而解决多层继承时可能发生的对同一基类继承多次而产生的二义性问题。 声明 class 派生类名:virtual 继承方式 基类名,如:class A:virtual public N 注意 在第一级继承时就要将共同基类设计为虚基类 类的继承举例1: class N {pu
显示全部
相似文档