C语言写一个类

C语言写一个类

#ifndef _50_2_H_

#define _50_2_H_

typedef void Demo;

Demo* Demo_Create(int i, int j);

int Demo_GetI(Demo* pThis);

int Demo_GetJ(Demo* pThis);

int Demo_Add(Demo* pThis, int value);

void Demo_Free(Demo* pThis);

#endif

#include "50-2.h"

#include "malloc.h"

struct ClassDemo

{

int mi;

int mj;

};

Demo* Demo_Create(int i, int j)

{

struct ClassDemo* ret = (struct ClassDemo*)malloc(sizeof(struct ClassDemo));

if( ret != NULL )

{

ret->mi = i;

ret->mj = j;

}

return ret;

}

int Demo_GetI(Demo* pThis)

{

struct ClassDemo* obj = (struct ClassDemo*)pThis;

return obj->mi;

}

int Demo_GetJ(Demo* pThis)

{

struct ClassDemo* obj = (struct ClassDemo*)pThis;

return obj->mj;

}

int Demo_Add(Demo* pThis, int value)

{

struct ClassDemo* obj = (struct ClassDemo*)pThis;

return obj->mi + obj->mj + value;

}

void Demo_Free(Demo* pThis)

{

free(pThis);

}

#include

#include "50-2.h"

int main()

{

Demo* d = Demo_Create(1, 2); // Demo* d = new Demo(1, 2);

printf("d.mi = %d\n", Demo_GetI(d)); // d->getI();

printf("d.mj = %d\n", Demo_GetJ(d)); // d->getJ();

printf("Add(3) = %d\n", Demo_Add(d, 3)); // d->add(3);

// d->mi = 100;

Demo_Free(d);

return 0;

}

ClassDemo代表一个类,Demo_Create相当于构造函数。

运行结果如下:

主函数第12行直接通过d指针修改mi的值,会编译报错:

从面向对象的观点来看,mi是私有的,我们不能从外部访问。

而在C语言中没有private关键字,我们是通过void*指针来实现的。通过void这样的技术来实现信息隐藏。

面向对象不是C++专属的,我们也可以用C语言写面向对象。

相关推荐

椓破的解释及意思
365最专业的数据服务平台

椓破的解释及意思

📅 07-12 👁️ 1673
大话西游2移山大殿简单攻略,套装选择、小怪位置及剑阵图解
cf进游戏黑屏怎么解决(cf进游戏黑屏怎么解决弹出非输入不支持怎么解决)
汽车美容管理软件哪个好
大陆365bet网址

汽车美容管理软件哪个好

📅 12-28 👁️ 6564
氣泡酒:關係,酒展,釀造,分類,度數,用途,價格,飲用,溫度,杯型,用具,開瓶,倒
炉石传说(国际服)
365最专业的数据服务平台

炉石传说(国际服)

📅 01-13 👁️ 3498