13、虚函数和纯虚函数的区别【高频】
虚函数:
- 定义:虚函数就是 用virtual修饰的函数
- 作用:当父类的虚函数被子类重写时,可以实现动态多态
- 其他:
- 父类出现虚函数时,子类并非一定要重写这个函数
#include <iostream>
class Base {
public:
virtual void show() {
std::cout << "Base class show function\n";
}
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function\n";
}
};
int main() {
Base* basePtr = new Derived();
basePtr->show(); // 输出: Derived class show function
delete basePtr;
return 0;
}
纯虚函数:
- 定义:在虚函数后面加一个=0和标记
- 作用:纯虚函数本身没有内容,有纯虚函数的类叫 抽象类,抽象类是不能实例化的。所以 它相当于强制要求子类重写,否则子类也会成为抽象类。因此,纯虚函数为继承它的子类定义了一个统一的接口,让子类完成它的具体实现。
#include <iostream>
class Base {
public:
virtual void show() = 0; // 纯虚函数
};
class Derived : public Base {
public:
void show() override {
std::cout << "Derived class show function\n";
}
};
int main() {
// Base baseObj; // 错误:不能实例化抽象类
Base* basePtr = new Derived();
basePtr->show(); // 输出: Derived class show function
delete basePtr;
return 0;
}