#OOC-GCC中宏的使用
关于OOC-GCC中宏的使用
类的设计(模块化的编程应在.h文件中使用)
假定有一个名为"A"的"类"
CLASS(A){
...... 这里为实例成员
STATIC(A)
...... 这里是类成员(实际结构体为struct _StA,并被重定义为StA)
};
假定有一个名为"B"的继承了上面"A"的"类"
CLASS_EX(B,A){
.......
STATIC_EX(B,A)
.......
};
注意继承时,前面是子类,后面是要定义的父类.
类的构造与析构(模块化的编程应在.c文件中使用)
static int A_reload(A *THIS,void *p){
THIS->.... 这里使用第一个参数来初始化实例成员
return 0;
}
static int A_reloadSt(StA *THIS,void *p){
THIS->.... 这里使用第一个参数来初始化类成员
return 0;
}
static int A_unload(A *THIS,void *p){
THIS->.... 这里使用第一个参数来析构实例成员
return 0;
}
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);
DELETE0(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的析构