MST

星途 面试题库

面试题:C++抽象基类的纯虚函数特性

在C++中,抽象基类通常包含纯虚函数。请解释纯虚函数的定义和作用,并举例说明如何在抽象基类中声明和在派生类中实现纯虚函数。
28.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

纯虚函数的定义

纯虚函数是在基类中声明的虚函数,它在基类中没有定义具体的实现,要求任何派生类必须定义自己的版本。其声明格式为在虚函数声明语句后加上 = 0

纯虚函数的作用

  1. 定义接口:为派生类提供一个通用的接口,派生类必须实现这些函数,以保证多态性的正确实现。这使得不同的派生类可以以不同的方式实现相同的功能。
  2. 抽象概念:用于表示一些抽象的概念,这些概念在基类层面无法给出具体的实现,只有在更具体的派生类中才有意义。例如,“图形”作为一个抽象概念,其“绘制”操作在具体的“圆形”“矩形”等派生类中有不同实现。

示例代码

// 抽象基类
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 函数是纯虚函数。CircleRectangleShape 的派生类,它们必须实现 draw 函数。这样,通过 Shape 指针或引用调用 draw 函数时,会根据实际对象的类型(CircleRectangle)调用相应的 draw 实现,从而实现多态性。