虚函数你真的懂?出一道可以疑惑你的面试题吧!

2023-12-13 14:14:03 浏览数 (2)

在C 中,virtual是一个关键字,主要用于定义虚函数(virtual function)。虚函数是一种特殊的成员函数,通过使用virtual关键字,可以实现运行时多态性(runtime polymorphism)。

今天,继续分析一个比较有趣的问题,虚函数大家肯定用过吧,ok,那么我们先来看这么一道题目,你觉得应该输出什么结果?

代码语言:javascript复制
#include <iostream>

struct Base {
    virtual void display(int i = 5) { std::cout << "Base::" << i << "n"; }
};

struct Derived : public Base {
    virtual void display(int i = 9) override { std::cout << "Derived::" << i << "n"; }
};

int main() {
    Base* a = new Derived();
    a->display();

    Base* aa = new Base();
    aa->display();

    Derived* b = new Derived();
    b->display();
}

先解释一下这个题目:有两个类,一个是基类Base,一个是派生类Derived,子类重写基类的display,下面有三种场景的display打印操作,本次讨论的问题是:这三个display的输出是什么?

关于本题答案,欢迎留言区讨论!

0 人点赞