C++ 虚继承、联编

本文探讨了C++中的虚继承机制如何解决多重继承中的访问不明确问题,并通过实例展示了动态联编在多态中的应用,涉及静态与动态调用的区分。

1、虚继承

#include<iostream>
using namespace std;
class stu
{
public:
    int a;
    stu()
    {
        a = 13;
    }
};
class stu1 :virtual public stu//虚继承,只是对父类的成员有使用权。
{//虚拟继承是多重继承中所特有的概念。虚拟基类是为解决多重继承而出现的。解决多继承中访问不明确问题。
public:

};
class stu2 :virtual public stu
{
public:

};
class stu3 :public stu1,public stu2
{
public:

};

int main()
{
    stu3 db;
    cout<<db.a<<endl;
    
    system("pause");
    return 0;
}

2、联编

#include<iostream>
using namespace std;
class stu//联编是指在程序执行的时候才将函数实现与函数调用关联。
{
public:
    void fun()//静态联编。
    {
        cout <<"fun\n";
    }

   virtual     void fun2()//静态联编。
    {
       cout << "fun2.0\n";
    }

};
class stu1 :public stu {
    virtual  void fun2()
    {
        cout << "fun2.1\n";
    }
};

//void fun1()//静态联编
//{
//    cout "fun1\n";
//}

int main()
{
    /*stu db;
    db.fun();//静态联编

    fun1()*/
    /*stu* db = new stu1;//静态联编
    db->fun2();*/

    stu* a;
    int b;
    cin >> b;
    switch (b)
    {
    case 1: a = new stu;
        break;
    case 2: a = new stu1;
        break;
    }
    a->fun2();//动态联编
    system("pause");

    return 0;
}
*c++里面的动态联编只针对多态,C语言中只有静态联编。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值