前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >虚函数你真的懂?出一道可以疑惑你的面试题吧!

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

作者头像
公众号guangcity
发布2023-12-13 14:14:03
1170
发布2023-12-13 14:14:03
举报
文章被收录于专栏:光城(guangcity)光城(guangcity)

在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的输出是什么?

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 光城 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档