1. 派生类
派生类对象存储了基类的数据成员(派生类继承了基类的实现)
派生类对象可以使用基类的方法(派生类继承了基类的接口)
派生类需要自己的构造函数
派生类可以根据需要添加额外的数据成员和成员函数
2. 构造函数
派生类应当使用初始化列表的方式将值传递给基类的构造函数,否则将使用默认的基类构造函数
derived:derived(type1 x, type2 y):base(x, y) {}
首先创建基类对象。
派生类构造函数应通过成员初始化列表将基类信息传递给基类的构造函数。
派生类构造函数应当初始化派生类新增的初始化成员。
3. 派生类和基类之间的重要关系
a. 派生类对象可以使用基类的方法
b. 基类指针可以在不显式类型转换的情况下指向派生类对象
c. 基类的引用可以在不显式类型转换的情况下引用派生类对象
但是,基类指针和引用只能调用基类的方法,不能调用派生类的方法。
引用类型的兼容性可以将基类对象初始化为派生类对象
假如RatedPlayer是TableTennisPlayer的派生类
下面的代码:
RatedPlayer olaf1(1840, "Olaf", "Loaf", true);
TableTennisPlayer olaf2(olaf1);
匹配的函数原型为拷贝构造函数:TableTennisPlayer(const TableTennisPlayer&);
当然也可以将派生类赋值给基类对象,此时调用的是基类的赋值运算符重载
4. 多态公有继承
有两种重要的机制用于实现多态公有继承:
在派生类中定义基类的方法
使用虚方法
5. c++和java如何访问父类的公有成员函数
如果访问的父类函数子类没有重写,那么可以直接使用函数名访问,如果重写了:
c++采用 父类名::函数名访问
java采用 super.函数名访问
原文:https://www.cnblogs.com/feng-ying/p/10544140.html