内容
1. 继承的基本概念
2. 单一继承
3. 多重继承
4. 基类成员的初始化
5. 二义性和支配规则
6. 虚基类
7. 访问基类成员和访问对象成员的成员
8. 赋值兼容
一 继承的基本概念
系统提供了相当多的已定义好的基类,用户可以根据具体的应用,在已有类的基础上构架新类,在派生类中,可以直接使用父类部分的代码,但却不需要重新编写父类的代码。这样可以加速软件开发的速度,保障软件开发的质量。继承提供了在已有类的基础上开发出新类的机制,可以节省重复代码的编写工作,是软件重用的基础。
已知一个类A,对A类加以扩展,即增加一些属性和行为,构成一个新类B,此时B类将A类已有的属性和行为继承下来。称类 B 继承了 A ,或称类 A 派生了 B 。A:父类,基类,B:子类,派生类。
在C++中,有两种继承方式:单一继承和多重继承。
二 单一继承
1. 定义派生类的一般格式:
class <派生类名>: <继承方式> <基类名>
{
[private: // 私有成员说明
...]
[public: // 公有成员说明
...]
[protected: // 保护成员说明
...]
} ;
继承方式:
- public 公有继承(派生)
- private 私有继承(派生)
- protected 保护继承(派生)
2. 公有继承(派生)
class A
{
......
};
class B: public A // 公有继承A
{
......
};
例:
class A
{
private:
int ax;
protected:
int ay;
public:
int az;
void f1( ){...};
int Getax( ){
return ax;}
void Setax( int x ) {
ax = x; }
};
class B: public A
{
private:
int bx;
protected:
int by;
public:
int bz;
void f2( ){...};
float f3( ){...};
};
相当于:
class B: {
private: int ax; //在B类内部不能直接访问
private:
int bx;
protected:
int ay;
int by;
public:
int az;
int bz;
void f1( ){...};
int Getax( ){...} //可通过 Getax( )、Setax( )访问A类的私有成员 ax 的值
void Setax( int x ) {
ax = x; }
voi