欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-01 20:16:52
...
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语言实现继承与多态

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;
}

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