一、继承和派生的基本概念
从一个或多个以前定义的类(基类)产生新类的过程称为派生,这个新类称为派生类。基类和派生类又可以分别叫做父类和子类。派生的新类可以增加或重新定义数据和操作,这就产生了类的层次性。
类的继承是指派生类继承基类的数据成员和成员函数。继承通常用来表示类属关系,不能将继承理解为构成关系。当从现有类中派生出新类时,派生类可以有以下几种变化:
① 增加新的成员;
② 重新定义已有的成员函数;
③ 改变基类成员的访问权限。
C++中有两种继承:单一继承和多重继承。
二、单一继承
1、派生类的构造函数和析构函数
先看一个简单示例:
#include <iostream>
using std::cout;
class Point {
private:
int x, y;
public:
Point(int a, int b) {
x = a;
y = b;
cout << "正在初始化Point类的对象" << "\n";
}
~Point() {
cout << "销毁Point类的对象" << "\n";
}
void showXY() {
cout << "x=" << x << ",y=" << y << "\n";
}
};
class Rectangle: public Point {//派生类继承基类并使用访问控制
private:
int width, height;
public:
Rectangle(int a, int b, int c, int d) :Point(a, b) {//定义派生类的构造函数
width = c;
height = d;
cout << "正在初始化Rectangle类" << "\n";
}
~Rectangle() {
cout << "销毁Rectangle类的对象" << "\n";
}
void showWH() {
cout << "W=" << width << ",H=" << height << "\n";
}
};
#include "Example1.h"
void example1();
int main() {
example1();
return 0;
}
void example1() {
Rectangle r(1, 2, 3, 4);
r.showWH(); //调用派生类的成员函数
r.showXY(); //调用基类的成员函数
// 正在初始化Point类的对象
// 正在初始化Rectangle类
// W=3,H=4
// x=1,y=2
// 销毁Rectangle类的对象
// 销毁Point类的对象
}
派生类的声明要在类名后添加一个冒号,冒号后面是访问控制关键字(public、protected、private),之后是基类名。 由于构造函数是不被继承的,