用 C 语言实现 C++ 的 继承 和 多态

用C++简单实现继承 && 多态(我用的是VS2013)

C++代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;
//C++版
template<class T>
struct A
{
    virtual void F()
    {
        cout<<"A::F()"<<endl;
    }
    T a;
};
template <class T>
struct B:public A<T>//B类 公有继承 A类
{
    virtual void F()
    {
        cout << "B::F()" << endl;
    }
    T b;
};
void testCPlusPlus()
{
    A<int> a;//创建父类的对象
    B<int> b;//创建子类对象
    A<int>* p;//创建父类的指针
    p= &a;// 父类的指针指向父类对象
    //形成的条件:1.父类与子类要形成函数的重写(虚函数的重写)2.父类的指针或引用指向父类或子类的对象
    p->F();//调用的是父类的A::F()
    p = (A<int>*)&b;// 父类的指针指向子类对象
    p->F();//调用的是子类的B::F()
}

int main()
{
    testCPlusPlus();
    system("plause");
    return 0;
}

C++结果

这里写图片描述

C语言模拟实现C++的 继承 与 多态

C语言代码

//C语言版
typedef void(*FUNC)();//定义一个函数指针
void FA()
{
    printf("A_::F()\n");
}
void FB()
{
    printf("B_::F()\n");
}

struct A_
{
    FUNC F;//创建函数名
    int a_;
};
struct B_
{
    int b_;
    A_ a;//在B_类创建A_类的对象相当于继承了A_类的所有成员
};
void testC()
{
    A_ a1;//创建A_类对象
    B_ b1;//创建B_类对象
    a1.F = FA; //(函数名就相当于一个原声指针)
    b1.a.F = FB;

    A_*p;//创建A_指针
    p = &a1;//A_类指针指针指向A_类对象
    p->F();//调用的是类似父类的A_::F()
    p=(A_*)&b1;//A_类指针指针指向B_类对象
    p->F();//调用的是类似子类的B_::F()
}
int main()
{
    //testCPlusPlus();
    testC();
    system("pause");
    return 0;
}

C语言结果

这里写图片描述

总结:

C语言也可以根据他的语法规则实现C++的继承与多态。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值