对比C和C++,C语言的结构体的确有点类似C++类的概念,可使用结构体内嵌指针实现面向对象编程
总体来说,C语言是面向过程的,但是C语言写出的Linux系统是面向对象的。非面向对象的语言,其实也是可以使用面向对象的思路来编写程序的。只是说用面向对象的语言来实现面向对象编程会更简单一些,但是C语言的高效性是其他面向对象编程语言无法比拟的。当然使用C语言来实现面向对象的开发相对不容易理解,这就是为什么大多数人学过C语言却看不懂Linux内核源码。
struct obj
{
int age;
void (*pFunc)(void);
};
使用这样的结构体就可以实现面向对象,这样包含了函数指针的结构体就类似于面向对象中的CLASS,结构体中的变量类似于CLASS中的成员变量,结构体中的函数指针类似于CLASS中的成员方法。
其实大部分的底层代码都是使用面向对象的方法来封装,例如:Linux内核、其他SDK底层代码等