经典面试题:c语言实现继承与多态

c语言实现继承与多态
具体要求:
利用c语言实现一个struct A与struct B 包含一个int成员a与b,要求实现B继承A的效果,即B中包含A,再者,可实现多态,即A* p指向A调用A的函数,指向B调用B的函数

c++的继承与多态实现:

#include <iostream>
using namespace std;
#include <windows.h>
class A
{
public:
    virtual void f1()
    {
        cout << "A::f()" << endl;
    }

    int _a;
};

class B : public A
{
public:
    virtual void f1()//重写
    {
        cout << "B::f()" << endl;
    }

    int _b;
};


int main()
{

    A a;
    B b;

    A* p = &a;//指向A
    p->f1();
    p = &b;
    p->f1();
    system("pause");
    return 0;
}

这里写图片描述

c语言实现:

typedef void(*FUNC) ();//定义函数指针
struct A
{
    FUNC _f;//利用函数指针实现含有成员函数
    int a;
};
struct B
{
    struct A a;//利用嵌套实现继承
    int b;
};

void funA()
{
    printf("A::fun\n");
}
void funB()
{
    printf("B::fun\n");
}
int main()
{
    struct A a;
    struct B b;
    a._f = funA;
    b.a._f = funB;
    struct A *p = &a;//指向struct A a
    p->_f();
    p = (struct A*)&b;
    p->_f();


    system("pause");
    return 0;
}

这里写图片描述

猜你喜欢

转载自blog.csdn.net/kai29/article/details/80042416