#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct class
{
int value;
struct class *p_next;
void (*init) (struct class *this);
void (*destroy)(struct class *this);
void (*set_value)(struct class *this, int value);
int (*get_value)(struct class *this);
};
struct class * create_instance();
void destroy_instance(struct class *p_instance);
/********
* 定义 *
********/
void init(struct class *this)
{
this->value = 0;
this->p_next = NULL;
}
void destroy(struct class *this)
{
// TODO 释放内部成员
}
void set_value(struct class *this, int value)
{
this->value = value;
}
int get_value(struct class *this)
{
return this->value;
}
struct class * create_instance()
{
struct class *p_instance = (struct class *)malloc(sizeof(struct class));
memset(p_instance, 0, sizeof(struct class));
p_instance->init = init;
p_instance->destroy = destroy;
p_instance->set_value = set_value;
p_instance->get_value = get_value;
p_instance->init(p_instance);
return p_instance;
}
void destroy_instance(struct class *p_instance)
{
p_instance->destroy(p_instance);
free(p_instance);
}
int main()
{
struct class *p_instance = create_instance();
//p_instance->set_value(p_instance, 5);
printf("%d\n", p_instance->get_value(p_instance));
destroy_instance(p_instance);
return 0;
}
C语言模拟C++类
最新推荐文章于 2024-07-29 14:21:11 发布