手机
当前位置:查字典教程网 >编程开发 >C语言 >利用C语言实践OOP,以及new,delete的深入分析
利用C语言实践OOP,以及new,delete的深入分析
摘要:研究了一下,总算勉强能够融会贯通了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语言实践OOP,以及new,delete的深入分析1

【利用C语言实践OOP,以及new,delete的深入分析】相关文章:

为什么要学习C语言 C语言优势分析

用C语言程序判断大小端模式

C++中delete和delete[]的区别详细介绍

关于C++使用指针 堆和栈的区别分析

解析VC中创建DLL,导出全局变量,函数和类的深入分析

C语言实现逆波兰式实例

c语言B树深入理解

C++关键字typename的深入理解

c/c++语言位域注意事项分析

合并排序(C语言实现)

精品推荐
分类导航