#include <iostream>
// 基类,包含虚函数
class Base {
public:
virtual void show() { // 虚函数
std::cout << "Base class show function." << std::endl;
}
virtual ~Base() {} // 虚析构函数
};
// 抽象类,包含纯虚函数
class AbstractBase {
public:
virtual void show() = 0; // 纯虚函数
virtual ~AbstractBase() {} // 虚析构函数
};
// 派生类,重写虚函数
class Derived : public Base {
public:
void show() override { // 重写虚函数
std::cout << "Derived class show function." << std::endl;
}
};
// 派生类,实现纯虚函数
class DerivedAbstract : public AbstractBase {
public:
void show() override { // 实现纯虚函数
std::cout << "DerivedAbstract class show function." << std::endl;
}
};
int main() {
Base* b = new Derived(); // 可以实例化
b->show(); // 调用派生类的重写方法
AbstractBase* a = new DerivedAbstract(); // 可以实例化
a->show(); // 调用派生类的实现方法
delete b;
delete a;
return 0;
}