目录
一、继承的概念
1、定义
继承是面向对象编程中的一个重要概念,它允许我们创建一个新类(派生类或子类),从一个已有的类(基类或父类)中继承成员变量和成员函数。这就好比子女继承父母的某些特征一样,派生类继承基类的属性和行为,并且可以在这个基础上进行扩展和修改。
2、意义
- 可以实现代码复用,减少重复代码的劳动量。
- 继承是实现多态的必要条件。
- 继承本身就是为了实现多态,顺便实现了代码复用。
3、关于继承的称呼
一个类C 继承来自 类A 我们一般称呼:
A类:父类 基类
C类:子类 派生类
C继承了A A派生了C
4、示意图
二、基本语法
class 子类名称:继承方式 父类名称
{
子类新增的成员;
}
class C:public A
{
}
1、基类对象初始化
在子类的构造函数中,通常需要在初始化列表中显式调用基类的构造函数,以完成对基类成员的初始化。
在继承时,需要在子类构造函数的初始化列表中 显性的调用父类的构造函数 来完成对父类成员的初始化
格式:构造函数名(int val_1 .,int val_2 ):class A(val_1 , val_2)
2、派生类中调用基类
在派生类中可以通过以下方式调用基类的成员:
类外访问:
对象名.基类名::变量
对象名.基类名::函数名(函数的实参表);
类内访问:
基类名::变量;
基类名::函数名(函数的实参表)
3、代码示例:
#include <iostream>
#include <string>
using namespace std;
class person
{
private:
/* data */
public:
string name;
int id;
int height;
person(string name,int id,int height)
:name(name),id(id),height(height)
{
cout << "我是父类构造函数" << endl;
}
};
class man:public person
{
private:
string name;
public:
man(string name,int id,int height)
:person(name,id,height)
{
}
void show_date()
{
cout << person::name << " " << person::id << " " << this->height << endl;
}
};
int main(int argc, char const *argv[])
{
man m("张三", 1, 131);
m.show_date();
return 0;
}
三、继承方式
- 类中的访问控制权限:
类内 |