C语言的面向对象写法
来源:互联网 发布:淘宝上可信的澳洲代购 编辑:程序博客网 时间:2024/06/04 23:01
C是面向过程的语言。面向对象是一种思想。利用一些c的技巧还是可以实现面向对象的。
参考原文:http://www.codeproject.com/Articles/108830/Inheritance-and-Polymorphism-in-C
翻译的:http://www.cnblogs.com/skynet/archive/2010/09/23/1833217.html
写得很好,例子命名与c规范也很值得参考。
以下为我对着敲一遍的代码。继承只是多了个指针。多态由于还没用到,先保留此文备以后学习。
//Person.htypedef struct _Person Person;//declaration of pointers to functionstypedef 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;//constructorPerson* new_Person(const char* const pFirstName, const char* const pLastName);//destructorvoid 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;
0 0
- C语言的面向对象写法
- 面向对象的C写法
- C语言的面向对象
- 面向对象的c语言
- hjr教程-C++(一):面向对象类的写法
- C语言面向对象
- C语言面向对象
- JS面向对象的写法
- js面向对象的写法
- C语言中面向对象的尝试
- C语言面向对象的实现
- 面向对象的C语言编程
- C语言面向对象思想的领悟
- C语言面向对象的构造
- 面向对象的C语言框架尝鲜
- C语言面向对象的实现---多态性
- C语言面向对象的程序设计语言
- C语言的面向对象式重构
- 关于springmvc的跨域问题
- 过滤DataTable数据的Select()方法
- java和jsp四舍五入问题
- gcc -static 命令
- c/c++中float和double类型的存储
- C语言的面向对象写法
- 视频质量诊断
- Android 枚举类型的使用
- 枚举enum的用法
- 拓扑排序hihocoder#1174&җ
- HttpURLConnection用法详解
- Gradle详解-Chapter 20. The Build Lifecycle
- hadoop核心逻辑shuffle代码分析-reduce端
- 简单易学的机器学习算法——受限玻尔兹曼机RBM