C语言的面向对象
面向对象的思想,不应受某种语言的限制,面向过程的C语言同样如此。C里面没有类,可以用结构体;没有类的方法,可以使用函数指针; 最重要的,没有继承的概念, 怎么解决呢? 想想强制类型转换,为什么能转换成功呢?这就为实现继承做了基础,加上前面有几篇写过可执行文件的结构,将在后面给出一种方式。 1.一个简单的类 #include<stdio.h> #include<stdlib.h> typedef struct Man { int age; void (*sayHi)(); }Man; void manSayHi(){ printf("hi ... \n"); } Man* createMan(){ return (Man*)malloc(sizeof(Man)); } void deleteMan(Man* m){ free(m); } Man* initMan(Man* m,int age){ m->age = age; m->sayHi = manSayHi; return m; } int main(){ int a; Man* m = initMan(createMan(),30); m->sayHi(); printf("man age = %d \n",m->age); deleteMan(m); //这里只是让弹出的命令窗口,等待一个数值,不消失。 scanf_s("