在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的输出是什么?
关于本题答案,欢迎留言区讨论!