C 面向對象程序設計
運行時動態綁定一直以來都是面向對象的優勢,比如C++\JAVA等面向對象編程語言都有這種特性。
但是,其實C語言也可以有這樣的優勢。在C語言要實現這種方式,需要利用結構體、以及結構體的操作函數表。
然後再利用工廠模式、或者橋模式,在程序運行時動態綁定。
例子如下:
typedef struct person person_t;
typedef struct person_opt person_opt_t;
struct person
{
void *data;
person_opt_t *opt;
};
struct person_opt
{
void (*say)(person_t *p);
void (*walk)(person_t *p);
};
struct person_opt teacher_opt;
struct person_opt student_opt;
person *create_person(int type)
{
person *p = (person *)malloc(sizeof(person));
if(type == 0)
{
p->opt = &teacher_opt;
}else
{
p->opt = &student_opt;
}
}