目录
2.4 以C结构表达类(class),并创建对象(object)
认识C函数指针
范例
2.5 在C函数里存取对象的属性(attribute)
范例
2.4 以C结构表达类(class),并创建对象(object)
认识C函数指针
- struct里不能定义函数本身,但能定义函数指针(function pointer)属性。
这个hello就是一个函数指针属性了。
范例
- 兹以C来定义一个Light类(class),创建其对象(object),并调用其函数。
- 定义Light类
- 撰写函数:
static void turnOn(){printf(“ON” );
}static void turnOff()
{printf(“OFF” );
}struct Light * LightNew(){ // 構造式struct Light *t;t = (Light *)malloc(sizeof(Light));t->turnOn = turnOn;t->turnOff = turnOff;return (void*) t;
}
- 创建对象,调用函数:
void main() {Light *led = LightNew();led->turnOn();led->turnOff();
}
2.5 在C函数里存取对象的属性(attribute)
- 刚才调用C函数时,其函数并没有存取(access)对象里的属性或数据。
范例
- 定义Light类
- 撰写函数:
static void turnOn( Light *cobj ){cobj->state = 1;printf(“ON” ); }static void turnOff( Light *cobj ) {cobj->state = 0;printf(“OFF” ); }struct Light *LightNew(){ // 構造式struct Light *t;t = (Light *)malloc(sizeof(Light));t->turnOn = turnOn;t->turnOff = turnOff;return (void*) t; }
-
创建对象,调用函数:
void main() {Light *led = LightNew();led->turnOn( led );led->turnOff( led );
}