C++抽象类实战:从理论到代码实现
抽象类的基本概念
抽象类定义了一组方法(如move()),但可能不提供具体实现。它类似于"交通工具"这一抽象概念,需要派生类(如Car、Bike)实现具体功能。
抽象类的特点
- 包含至少一个纯虚函数(声明方式为
virtual 返回类型 函数名() = 0;) - 不能直接实例化
- 为派生类提供统一的基础结构和接口
代码实现示例
#include<iostream>usingnamespacestd;classTeacher{public:string name;string school;string major;virtualvoidgoInClass()=0;virtualvoidstartTeaching()=0;virtualvoidafterTeaching()=0;};classEnglishTeacher:publicTeacher{public:voidgoInClass()override{cout<<"英语老师开始进入教室"<<endl;}voidstartTeaching()override{cout<<"英语老师开始教学"<<endl;}voidafterTeaching()override{}};classMathTeacher:publicTeacher{public:voidgoInClass()override{cout<<"数学老师开始进入教室"<<endl;}voidstartTeaching()override{cout<<"数学老师开始教学"<<endl;}voidafterTeaching()override{cout<<"数学老师下课后手把手教做题"<<endl;}};intmain(){EnglishTeacher e;e.goInClass();MathTeacher t;t.startTeaching();t.afterTeaching();Teacher*teacher=newMathTeacher;// 抽象类指针实现多态teacher->startTeaching();deleteteacher;return0;}关键点说明
Teacher是抽象类,含三个纯虚函数- 派生类必须实现所有纯虚函数(如
EnglishTeacher::goInClass()) - 通过抽象类指针可实现运行时多态(
Teacher* teacher = new MathTeacher)
代码可直接复制使用,注意内存管理(示例中未包含delete,实际需补充)。
