C语言的面向对象写法
2016-06-23 14:23
399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/study_sky/article/details/51743183
C是面向过程的语言。面向对象是一种思想。利用一些c的技巧还是可以实现面向对象的。
参考原文:http://www.codeproject.com/Articles/108830/Inheritance-and-Polymorphism-in-C
翻译的:https://www.geek-share.com/detail/2496172820.html
写得很好,例子命名与c规范也很值得参考。
以下为我对着敲一遍的代码。继承只是多了个指针。多态由于还没用到,先保留此文备以后学习。
//Person.h typedef struct _Person Person; //declaration of pointers to functions typedef void (*fptrDisplayInfo)(Person*); typedef void (*fptrWriteToFile)( Person*, const char*); typedef void (*fptrDelete)( Person* ); //为了简化教程,下面都是默认的public typedef struct _Person { char* pFName; char* pLName; //interface for function fptrDisplayInfo Display; fptrWriteToFile WriteToFile; fptrDelete Delete; }Person; //constructor Person* new_Person(const char* const pFirstName, const char* const pLastName); //destructor void delete_Person(Person* const pPersonObj); void Person_DisplayInfo(Person* const pPersonObj); void Person_WriteToFile(Person* const pPersonObj, const char* pFileName); //Person.c // Person* new_Person(const char* const pFirstName, const char* const PLastName) { Person* pObj = NULL; pObj = (Person*)malloc(sizeof(Person)); if (pObj == NULL) return NULL; pObj->pFirstName = malloc(sizeof(char) * (strlen(pFirstName) + 1) ); if (pObj->pFirstName == NULL) return NULL; strcpy(pObj->pFirstName, pFirstName); pObj->pLastName = malloc(sizeof(char) * (strlen(pLastName) + 1)); if (pObj->pLastName == NULL) return NULL; strcpy(pObj->pLastName, pFirstName); pObj->Delete = delete_Person; pObj->Display = Person_DisplayInfo; pObj->WriteToFile = Person_WriteToFile; return pObj; } //After the object creation, we can access its data members and functions // Person* pPersonObj = new_Person("Fa", "Kai"); pPersonObj->Display(pPersonObj); pPersonObj->WriteToFile(pPersonObj, "persondata.txt"); pPersonObj->Delete(pPersonObj); pPersonObj = NULL;
相关文章推荐
- C语言“快速排序”函数写法
- c语言面向对象:字节数组与字节缓冲
- 使用C语言进行面向对象的开发--GObject入门[2]
- 使用C语言进行面向对象的开发--GObject入门[1] [2]
- 非典型2D游戏引擎 Orx 源码阅读笔记(6) C语言实现的面向对象
- c语言实现面向对象
- JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档
- 【C/C++】C语言中qsort的cmp函数写法汇总
- 用C语言实现面向对象的开发
- JS 中面向对象的5钟写法
- 数独 C语言递归写法
- C语言不同类型变量与零值比较的规范写法
- 使用C语言进行面向对象的开发--GObject入门[6]
- 面向过程(C语言)和面向对象(OC语言)
- shell的C语言写法
- javascript_tooltip插件_面向对象的写法(没有使用单例模式)
- 使用C语言进行面向对象的开发--GObject入门[5]
- C语言两种for循环写法分析
- C语言面向对象的程序设计语言
- OOC 面向对象C语言编程实践