注意:
1.抽象类主要是使得整个类家族拥有相同的接口,便于对整个类的对象做批处理操作;
2.因为抽象类中包含纯虚函数,所以抽象类不能实例化出对象。
/*----------------------------
功能:抽象类的定义与实现
运行结果:
Calling Base2::display()...
Calling Derived::display()...
------------------------------
Author: Zhang Kaizhou
Date: 2019-4-13 11:03:28
-----------------------------*/
#include <iostream>
using namespace std;
class Base1{ // 含有纯虚函数的类为抽象类,抽象类不能实例化对象
public:
virtual void display() const = 0; // 纯虚函数
};
class Base2 : public Base1{ // 以公有方式继承Base1
public:
virtual void display() const; // 覆盖基类中的虚函数
};
void Base2::display() const{
cout << "Calling Base2::display()..." << endl;
}
class Derived : public Base2{ // 以公有方式继承Base2
public:
virtual void display() const; // 覆盖Base2中的函数
};
void Derived::display() const{
cout << "Calling Derived::display()..." << endl;
}
void func(Base1 * ptr){ // 形参为Base1类的指针
ptr->display(); // 通过指针调用display()函数
}
int main(){
Base2 base2;
Derived derived;
func(&base2); // 将Base2类的对象的指针传递给func()函数
func(&derived); // 将Derived类的对象的指针传递给func()函数
return 0;
}