C语言实现面向对象的思想
2016-09-08 20:17
127 查看
用C语言实现面向对象的方法,面向对象的三个基本特征,对象唯一性,继承性,抽象性。
使用C语言中的结构体和函数指针将数据与操作放在一起,使得一个问题的解决方法封装在结构体中。
其中结构体的嵌套使用实现了继承性。
#include<stdio.h>
#include<stdlib.h>
struct Adt2
{
int x;
int y;
int (*imll)(int x, int y);
};
struct Adt1
{
int var1;
int var2;
struct Adt2 var3;
int (*add)(int x, int y);
int (*sub)(int x, int y);
};
int add(int x,int y);
int sub(int x,int y);
int imll(int x, int y);
int main()
{
struct Adt1 a;
a.sub = sub;
a.var3.imll = imll;
a.var1 = 21;
a.var2 = 12;
a.var3.x = 12;
a.var3.y = 13;
a.add(a.var1, a.var2);
a.sub(a.var1, a.var2);
a.var3.imll(a.var3.x,a.var3.y);
return 0;
}
int imll(int x, int y)
{
printf("%d * %d = %d\n",x, y, x*y);
return x*y;
}
int add(int x, int y)
{
printf("%d + %d = %d\n", x, y, x+y);
return x+y;
}
int sub(int x, int y)
{
printf("%d - %d = %d\n",x, y, x-y);
return x-y;
}
使用C语言中的结构体和函数指针将数据与操作放在一起,使得一个问题的解决方法封装在结构体中。
其中结构体的嵌套使用实现了继承性。
#include<stdio.h>
#include<stdlib.h>
struct Adt2
{
int x;
int y;
int (*imll)(int x, int y);
};
struct Adt1
{
int var1;
int var2;
struct Adt2 var3;
int (*add)(int x, int y);
int (*sub)(int x, int y);
};
int add(int x,int y);
int sub(int x,int y);
int imll(int x, int y);
int main()
{
struct Adt1 a;
a.sub = sub;
a.var3.imll = imll;
a.var1 = 21;
a.var2 = 12;
a.var3.x = 12;
a.var3.y = 13;
a.add(a.var1, a.var2);
a.sub(a.var1, a.var2);
a.var3.imll(a.var3.x,a.var3.y);
return 0;
}
int imll(int x, int y)
{
printf("%d * %d = %d\n",x, y, x*y);
return x*y;
}
int add(int x, int y)
{
printf("%d + %d = %d\n", x, y, x+y);
return x+y;
}
int sub(int x, int y)
{
printf("%d - %d = %d\n",x, y, x-y);
return x-y;
}
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- 你应该学习哪种编程语言?
- [转]我们需要一种其他人能使用的编程语言
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- PostgreSQL教程(三):表的继承和分区表详解
- 关于C#中排序函数的总结
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- Lua编程示例(二):面向对象、metatable对表进行扩展
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- C#中面向对象编程机制之多态学习笔记
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- 浅谈Lua的面向对象特性
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例