Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46387
  • 博文数量: 11
  • 博客积分: 228
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-24 10:37
文章分类

全部博文(11)

文章存档

2012年(3)

2011年(8)

分类: C/C++

2011-11-03 09:49:41

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

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

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

如果没有这个连接处理,类实际struct数指针就没有函数的功能。函 init_A()XXX_A()  名模式是指明 XXX_A()属于 A 的函数,便程序理解和护。下就是要构造 。在 C 中这系统用构实现C  这个能显调用lw_oopc_kc.h (或"lw_oopc.h")可以利用宏 CLASS_CTOR(classobj)来将定义的对象行构造使之 有数据的时有方的功能实例化个对象 3 如下:

A   aa1;                           // 1、定义对象

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

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

二、C 继承的实现:

1、子类的定义:在类的开头用已经定义的进行定义一个变量,为了更加明白,明是继承,增加一个宏定义:

#define INHERIT(BASE)    IMPLEMENTS(BASE)

于是以类 B A 为例子下:

CLASS(B)

{

INHERIT(A);              //  继承 A int b;                                   //  的成员 void (*init) (void*, int x);

void (*put) (void*);

};

2、子类的成员函数实现,为了方便辨别,类 B 员函数带后缀 _B

void init_B (void*t, int x, int y)

{

B *cthis =   (B*) t;

CLASS_CTOR(A, cthis->A);               //----继承的类在这里构造,对象是 cthis->A cthis->A.init(&cthis->A, x);                //--

阅读(830) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~