面向对象程序设计c 语言,用C 语言实现面向对象编程.pdf

本文档是精心选出来的精华文档,对您的生活和学习将有所帮助!

C 语言实现面向对象编程

(合肥工业大学 潘秀才)

我曾经在嵌入式控制系统工作过,苦于嵌入式系统编程一直是C 语言,而没法 C++或其他高级

语言的面向对象方法编程。经过研究生的学习和探索,偶然间发现高焕堂老师写 OOPC (面向对象C

编程),感觉不错。遗憾的是上面没有提供继承的方法。根据本人的研究,在高老师的基础上,提出一

种可行而且结构明了的继承实现方法。至此,C 的OO 编程中的封装、继承、多态都全实现了。现在

本人将其总结如下,希望对大家有帮助。

一、类的封装实现:借用高焕堂的宏头文件,类很容易封装为如下的格式

1、类的定义,其中CLASS() 是lw_oopc_kc.h 中定义的宏

#include "lw_oopc_kc.h"

CLASS(A)

{

int a;

void(*init)(void*,int);

void(*put)(void*);

};

2 、成员函数的实现

类的封装实质是用借用struct 结构体,用函数指针来表示C++ 中类的方法 (成员函数)。接下来给

类A 的方法写实体函数。

void init_A(void *t,int x)

{

A *cthis = (A*)t;

cthis->a = x;

}

void put_A(void*t)

{

A *cthis = (A*)t;

printf(" %d ",cthis->a);

}

3、类(结构体)中的函数指针与实现函数的关联

通过下面的宏把类的方法(函数指针)和实现函数关联:

CTOR(A)

FUNCTION_SETTING (init, init_A);

FUNCTION_SETTING (put, put_A);

END_CTOR

1

PDF 文件使用 "pdfFactory Pro" 试用版本创建

4 、对象的定义、构造和初始化

如果没有这个连接处理,类 (实际是 struct )中的函数指针就没有函数的功能。函数 init_A()是

XXX_A() 的命名模式,是指明 XXX_A()属于 A 类的函数,方便程序的理解和维护。下面就是 构造

类。在 C++ 中这个工作系统自动调用构造函数实现而在 C 中,这个过程智能显示调用来实现。借助

lw_oopc_kc.h (或"lw_oopc.h" )可以利用宏CLASS_CTOR(class,obj) 来将定义的对象进行构造,使之

有数据的同时有方法的功能。实例化一个对象3 步子如下:

A aa 1; // 1 、定义对象

CLASS_CTOR(A,aa 1); // 2 、构造对象 使得函数指针和函数关联

aa 1.init(&aa1, 10); // 3 、初始化对象的成员变量,注意要: &aa1 (取地址)

二、C 继承的实现:

1 、子类的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值