-
概念
继承是指在定义一个新的类B时,如果该类与某个已有的类A相似(指的是B拥有A的全部特点),那么就可以把A作为一个基类,而把B作为基类的一个派生类(也称子类)。
派生类是通过对基类进行修改和扩充得到的,在派生类中,可以扩充新的成员变量和成员函数。
派生类一经定义后,可以独立使用,不依赖于基类。
派生类拥有基类的全部成员函数和成员变量,不论是private、protected、public。
在派生类的各个成员函数中,不能访问基类的private成员。
-
派生类的写法
class 派生类名:public 基类名
{
};
-
派生类对象的内存空间
派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积,在派生类对象中包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员变量之前。
-
继承方式
不同继承方式的影响主要体现在:
- 派生类成员对基类成员的访问权限
- 通过派生类对象对基类成员的访问权限
-
三种继承方式
- 公有继承
- 私有继承
- 保护继承
-
公有继承(public)
- 基类的public和protected成员:访问属性在派生类中保持不变;
- 基类的private成员:不可直接访问。
- 派生类中的成员函数:可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员;
- 通过派生类的对象:只能访问public成员。
-
继承实例程序
#include <iostream>
#include <string>
using namespace std;
class CStudent
{
private:
string name;
string id; //学号
char gender; //性别,'F'代表女,'M'代表男
int age;
public:
void PrintInfo();
void SetInfo( const string & name_,const string & id_,
int age_, char gender_ );
string GetName() { return name; }
};
class CUndergraduateStudent:public CStudent
{//本科生类,继承了CStudent类
private:
string department; //学生所属的系的名称
public:
void QualifiedForBaoyan(