用c实现c++的继承,封装和多态

c中struct

聚合数据类型只能是这五种类型(不能有成员函数)

整型、浮点型、字符型、指针型和 无值型(void)

封装:将数据和代码捆绑在一起,避免外界干扰和不确定性访问

继承:
让某种类型获得另一个类型对象的属性和方法

多态:
同一事物表现不同事物的形态。(函数重载显示出编译的多态性,虚函数实现运行时的多态

#include<stdio.h>

typedef void(*fun)();//这样可以直接用fun调用void(*)()的函数


struct base
{
	fun _f;
};

struct derived
{
	base _b;//实现继承

};

void f1()
{
	printf("%s\n", "base");
}
void f2()
{
	printf("%s\n", "derived");
}
void main()
{
	base b;//父类对象
	derived d;//子类对象
	b._f = f1;
	d._b._f = f2;//体现继承
	base *p1 = &b;//父类指针指向父类对象
	p1->_f();
	base *p2 = (base*)&d;//将父类指针指向子类对象,使用强制转换
	p2->_f();//指向的地址不变,所以调用子类函数<父类指针指向子类对象,实现多态>

}


猜你喜欢

转载自blog.csdn.net/weixin_43425693/article/details/89948319