中的
如果问一个问题:C语言支持面向对象吗?不知道你作何回答。其实C语言本身没有支持面向对象的机制,如果要用面向对象的思想来写程序就必须要做很多工作。
记得C++的发明者曾经用C语言写过一个C++的编译器,那么从逻辑上讲C语言是可以支持面向对象的!
阅读 kernel的时候,大家都会为其中大量的指针的使用而着迷或是糊涂,其实这些代码中包含了一些面向对象的思想。
现模拟一下,面向对象的一个特性封装:
#include
typedef struct node1{
int i;
int (*setvalue)(int *i);
}test;
int setvalue_test(int *i)
{
*i = 12;
return 0;
}
int main(int agrc, char **argv)
{
test test1;
test1.setvalue = setvalue_test;
test1.setvalue(&test1.i);
printf("the result of test1.i: %d\n", test1.i);
return 0;
}
此程序在Fedora 12 gcc version 4.4.2上调试通过。结果是:
$the result of test1.i: 12
阅读(731) | 评论(0) | 转发(0) |