OOC-GCC开源项目

我要开发同款
匿名用户2011年03月29日
30阅读
开发技术C/C++
所属分类程序开发、常用工具包
授权协议LGPL

作品详情

这是一个模板,是一些宏的集合,针对跨平台的GCC设计[0.11版以后的与VC9编译器兼容]

只用纯粹的C实现简单的OO的机制而不必了解冗杂的C++的语法,

其实现了简单的"类"的模拟,析构与构造,以及对单根继承的模拟.

在很大程度上,可以模拟完成大部分OO中较为重要的特性.

另有简化版ooc-lite( https://code.google.com/p/ooc-lite/ )及相关文档,

提供测试实例及设计思路详解.

关于OOC-GCC中宏的使用类的设计(模块化的编程应在.h文件中使用) 假定有一个名为"A"的"类"CLASS(A){  ...... 这里为实例成员  STATIC(A);  ...... 这里是类成员(实际结构体为struct_StA,并被重定义为StA)};假定有一个名为"B"的继承了上面"B"的"类"CLASS_EX(A,B){  .......  STATIC_EX(A,B);  .......};注意继承时,前面是父类,后面是要定义的子类.类的构造与析构(模块化的编程应在.c文件中使用)staticintA_reload(A*THIS,void*p){    THIS->....这里使用第一个参数来初始化实例成员    return0;}staticintA_reloadSt(StA*THIS,void*p){    THIS->....这里使用第一个参数来初始化类成员    return0;}staticintA_unload(A*THIS,void*p){    THIS->....这里使用第一个参数来析构实例成员    return0;}ASM(A,A_reload,A_unload,A_reloadSt,NULL)注意上面最后一个参数为类成员的析构使用NULL是为了说明无需某个函数时,可以不设置类的使用普通类"A"的使用A*a=NEW0(A); //声明第一个A的实例时调用StA和A的构造,        //以后再声明A的实例只调用A的构造StA*fA=ST(a);fA->someFunc(a,someParam);DEL0(a);   //销毁A的实例时调用A的析构        //当销毁显存的最后一个A的实例时,        //调用A和StA的构造带有继承的类"B"的使用B*b=NEW0(B); //注意父类的构造会自动调用StB*fB=ST(b);fB->someFunc(b,someParam);StA*fA=ST(b);fA->someFunc(b,someParam);使用父类的方法DELETE0(b); //无需知道b的具体类型时A或B,都会调用正确的析构     //如果是A的指针,则调用A的析构,如果是B的指针则调用B和A的析构
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论