C++ 各种继承关系中的虚函数

本文探讨C++中虚函数在不同继承关系下的多态实现,包括虚函数表的工作原理、内存布局以及如何通过虚函数实现多态。通过实例分析,解释了虚函数表的地址变化以及不声明虚函数时如何实现多态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ 各种继承关系中的虚函数探幽

最近在学习C++,卡在了实现多态的虚函数这里,之后通过阅读博文:C++虚函数表解析和自己的一些实践,有了点初步的理解,如果错误,欢迎指正。
首先建立如图所示的继承关系:
在这里插入图片描述
代码如下:

class A
{
   
public:
    virtual void speak()
    {
   
        cout << "this is A"<<endl;

    }
};
class B
{
   
public:
    virtual void speak()
    {
   
        cout << "this is B" << endl;
    }


};

class C:public A
{
   
public:
    virtual void speak()
    {
   
        cout << "this is C" << endl;
    }
};

class D:public A,public B
{
   
public:
    virtual void speak()
    {
   
        cout << "this is D" << endl;
    }
};

class E:public C
{
   
public:
    virtual void speak()
    {
   
        cout << "this is E" << endl;
    }</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值