面试题答案
一键面试- 纯虚函数的定义方式:
在函数声明后加上
= 0
即可将函数定义为纯虚函数。例如:
class Base {
public:
virtual void pureVirtualFunction() = 0;
};
- 使用纯虚函数的场景:
- 抽象基类:当需要定义一个抽象概念,它无法实例化,只是为派生类提供一个通用的接口框架时使用。例如,定义一个“图形”的抽象基类,“图形”本身是一个抽象概念,无法直接实例化,而具体的“圆形”“矩形”等可以从“图形”派生并实现具体的绘图等操作。
- 接口定义:在设计一些通用接口时,使用纯虚函数可以强制派生类实现特定功能。比如,定义一个“可序列化”接口,所有需要支持序列化功能的类从该接口派生并实现纯虚的序列化函数。
- 包含纯虚函数的类的定义及特点:
class Shape {
public:
virtual double area() = 0;
virtual double perimeter() = 0;
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double area() override {
return 3.14159 * radius * radius;
}
double perimeter() override {
return 2 * 3.14159 * radius;
}
};
特点: - 抽象类:包含纯虚函数的类被称为抽象类,抽象类不能实例化对象。 - 强制实现:派生类必须实现纯虚函数,否则派生类也会成为抽象类,不能实例化。 - 多态性基础:纯虚函数是实现C++多态性的重要手段,通过指向抽象类的指针或引用,可以调用派生类实现的函数版本。