用c语言模仿c++封装.
typedef struct test
{
int info;
char *pbuff;
int (*getinfo)(struct test *pthis); //在c++里面每一个成员函数都会有一个this指针,只不过对程序员是透明的,在c语言的结构体里没有这个this指针,所以,我们做自己做一个this;
void (*inittest)(struct test *pthis); //相当于构造函数
void (*dtor_test)(struct test *pthis); //析构函数.
} testsample;
//最后实现inittest()函数,这样才会能过编译.
void getinfo( struct test *pthis)
{
return pthis->info; //和c++的多像的啊..
}
void inittest(struct test *pthis)
{
pthis->getinfo = getinfo; //初始化函数要在最后面.
pthis->pbuf = (char *)malloc(102*sizeof(char));
pthis->info = 0;
}
void dtor_test(struct test *pthis)
{
if(pthis != NULL)
{
free(pthis);
}
}
#include <stdio.h>
int main()
{
testsample test;
test.inittest(&test); //this指针每次都要手式传递....麻烦.
test.getinfo(&test); //this在c++成员函数里面其实是隐含传递的.
test.dtortest(&test); //
return 0;
}