利用C语言实践OOP,以及new,delete的深入分析_C语言教程-查字典教程网
利用C语言实践OOP,以及new,delete的深入分析
利用C语言实践OOP,以及new,delete的深入分析
发布时间:2016-12-28 来源:查字典编辑
摘要:研究了一下,总算勉强能够融会贯通了c写成OOP还蛮有乐趣的编译环境:Xcode3.2.3+gcc4.2复制代码代码如下:#ifndefOBJ...

研究了一下,总算勉强能够融会贯通了

c写成OOP还蛮有乐趣的

编译环境:Xcode3.2.3+gcc4.2

复制代码 代码如下:

#ifndef OBJECT_H

#define OBJECT_H

typedef void (*Execute)(struct Object *a_This);

typedef struct Object* (*Allocate)();

typedef struct _Object_Vtable

{

char *name;

Execute exe;

}Object_Vtable;

typedef struct _baseCmd

{

Object_Vtable vtable;

}BaseCmd;

// --- for common --- //

BaseCmd* new(Allocate newObj);

void delete(void * item);

// --------------------------//

// --- for BaseCmd --- //

BaseCmd* NewBaseCmd();

void Exe_BaseCmd(BaseCmd *a_This);

// --------------------------//

// --- for HomeCmd --- //

typedef struct _homeCmd

{

Object_Vtable vtable;

}HomeCmd;

BaseCmd* NewHomeCmd();

void Exe_HomeCmd(HomeCmd *a_This);

// --------------------------//

#endif

复制代码 代码如下:

#include "Cloud.h"

// --- for common --- //

BaseCmd* new(Allocate newObj)

{

BaseCmd * obj = newObj();

return obj;

}

void delete(void * item)

{

free(item);

}

// --------------------------//

// --- for BaseCmd --- //

BaseCmd* NewBaseCmd()

{

BaseCmd * cmd = malloc(sizeof(BaseCmd));

cmd->vtable.name = "Cloud";

cmd->vtable.exe = Exe_BaseCmd;

return cmd;

}

void Exe_BaseCmd(BaseCmd *a_This)

{

printf("do base command = %s/n",a_This->vtable.name);

}

// --------------------------//

// --- for HomeCmd --- //

BaseCmd* NewHomeCmd()

{

HomeCmd * cmd = malloc(sizeof(HomeCmd));

cmd->vtable.name = "Home";

cmd->vtable.exe = Exe_HomeCmd;

return cmd;

}

void Exe_HomeCmd(HomeCmd *a_This)

{

printf("do home command = %s/n",a_This->vtable.name);

}

// --------------------------//

复制代码 代码如下:

#include <stdio.h>

#include <stdlib.h>

#include "Cloud.h"

int main (int argc, const char * argv[])

{

BaseCmd* cmd = new(NewBaseCmd);

cmd->vtable.exe(cmd);

delete(cmd);

BaseCmd* cmd2 = new(NewHomeCmd);

cmd2->vtable.exe(cmd2);

delete(cmd2);

return 0;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类