纯C实现c++类

来源:互联网 发布:mac os 10.13 dmg 下载 编辑:程序博客网 时间:2024/05/14 19:50

//#include "stdafx.h"
/*
描述:纯c模拟类,纯c编写c++类,纯c实现c++类的简单范例,结构模拟类,struct 编写class.
c编写类是实现纯c编写com组件的基础。
*/

#include <stdio.h>

typedef struct _Vtbl
{
    void (*AddRef)(struct CObject* obj,int);//所有的函数的第一个参数类似class的隐匿的this指针
    void (*Release)(struct CObject* obj);
}Vtbl;//函数指针数组

typedef struct CObject
{
    Vtbl vtbl;//函数指针数组指向成员函数
    int a;
    int b;
}Cobj;//结构模拟类的简单定义


void fun1(Cobj *obj,int count)//成员函数
{
    obj->a+=count;
    printf("CObject::a=%d/n",obj->a);
}

void fun2(Cobj *obj)//成员函数
{
    obj->a--;
    printf("CObject::a=%d/n",obj->a);
}

static Vtbl vt={fun1,fun2};//声明一个静态函数指针数组

int main()
{
    Cobj obj;//定义对象
    obj.vtbl=vt;
    obj.a= 10;
    obj.vtbl.AddRef(&obj,1);
    obj.vtbl.Release(&obj);
    return 0;
}