MST

星途 面试题库

面试题:C++ 中实现多态的必要条件及其在简单程序中的应用

请阐述C++实现多态的三个必要条件。并编写一个简单的C++程序,其中基类包含虚函数,派生类重写该虚函数,通过基类指针或引用调用该虚函数来展示多态性,解释程序运行过程中多态是如何体现的。
45.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. C++实现多态的三个必要条件

    • 继承:派生类从基类继承,形成类的层次结构。
    • 虚函数:在基类中使用virtual关键字声明虚函数,派生类重写这些虚函数。
    • 通过基类指针或引用调用虚函数:这样在运行时根据指针或引用实际指向的对象类型来决定调用哪个类的虚函数。
  2. 示例代码

#include <iostream>

class Base {
public:
    virtual void display() {
        std::cout << "This is Base class." << std::endl;
    }
};

class Derived : public Base {
public:
    void display() override {
        std::cout << "This is Derived class." << std::endl;
    }
};

int main() {
    Base* basePtr;
    Base baseObj;
    Derived derivedObj;

    basePtr = &baseObj;
    basePtr->display();

    basePtr = &derivedObj;
    basePtr->display();

    return 0;
}
  1. 多态体现解释
    • main函数中,首先定义了一个Base类型的指针basePtr
    • basePtr指向baseObj对象时,调用basePtr->display(),由于display是虚函数,此时调用的是Base类的display函数,输出This is Base class.
    • basePtr重新指向derivedObj对象时,再次调用basePtr->display(),虽然basePtr的类型是Base*,但由于display是虚函数,运行时会根据basePtr实际指向的Derived类对象,调用Derived类的display函数,输出This is Derived class.。这就体现了多态性,即在运行时根据对象的实际类型来决定调用哪个类的虚函数,而不是根据指针或引用的静态类型。