经典面试题: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语言实现:
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;
}
上一篇: Java中如何动态创建接口的实现方法
下一篇: 利用信号量实现线程同步