面试题答案
一键面试纯虚函数的定义
纯虚函数是在基类中声明的虚函数,它在基类中没有定义具体的实现,要求任何派生类必须定义自己的版本。其声明格式为在虚函数声明语句后加上 = 0
。
纯虚函数的作用
- 定义接口:为派生类提供一个通用的接口,派生类必须实现这些函数,以保证多态性的正确实现。这使得不同的派生类可以以不同的方式实现相同的功能。
- 抽象概念:用于表示一些抽象的概念,这些概念在基类层面无法给出具体的实现,只有在更具体的派生类中才有意义。例如,“图形”作为一个抽象概念,其“绘制”操作在具体的“圆形”“矩形”等派生类中有不同实现。
示例代码
// 抽象基类
class Shape {
public:
// 纯虚函数声明
virtual void draw() const = 0;
};
// 派生类1
class Circle : public Shape {
public:
void draw() const override {
std::cout << "Drawing a circle." << std::endl;
}
};
// 派生类2
class Rectangle : public Shape {
public:
void draw() const override {
std::cout << "Drawing a rectangle." << std::endl;
}
};
在上述代码中,Shape
类是抽象基类,其中的 draw
函数是纯虚函数。Circle
和 Rectangle
是 Shape
的派生类,它们必须实现 draw
函数。这样,通过 Shape
指针或引用调用 draw
函数时,会根据实际对象的类型(Circle
或 Rectangle
)调用相应的 draw
实现,从而实现多态性。