| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 468 人关注过本帖
标题:[讨论]在C中实现面向对象
取消只看楼主 加入收藏
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
结帖率:100%
收藏
 问题点数:0 回复次数:0 
[讨论]在C中实现面向对象
下面是我模仿C++中的vector用C写的一个类的定义,希望大家不要说我吃饱饭没事干,我只想研究下C中使用面向对象思想可以写出什么样子的程序。原帖发于C区没人睬所以在这里转发,原帖地址:http://bbs.bc-cn.net/viewthread.php?tid=168963

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>

//=============================Starting to define my Array class=========================

//-----------------------------Declaration segment-------------------------
typedef int DataType;
typedef struct array{

DataType *Data;
int size,max_size;

void (*Input)(DataType , struct array *);
void (*Constructor)(struct array *);
void (*Destructor)(struct array *);
}Array;

void Init(Array *this);
void _constructor(Array *this);
void _denstructor(Array *this);
void _input(DataType data, Array *this);

//------------------------------Implemen segment---------------------------

void _input(DataType data, Array *this)
{
int i;
DataType *ptr;

if(this->size >= this->max_size)
{
this->max_size +=10;
ptr=(DataType *)malloc(this->max_size*sizeof(DataType));

for(i=0;i<this->size;i++)
ptr[i]=this->Data[i];

free(this->Data);
this->Data=ptr;
}

this->Data[this->size]=data;
++(this->size);
}


void _constructor(Array *this)
{
this->size=0;
this->max_size=10;
this->Data=(DataType *)malloc(this->max_size*sizeof(DataType));
}

void _denstructor(Array *this)
{
free(this->Data);
}


void Init(Array *this)
{
this->Input =_input;
this->Constructor =_constructor;
this->Destructor =_denstructor;

this->Constructor(this);
}

//===================================definition end===============================


// 使用示例
int main()
{
Array MyArray;
Init(&MyArray); //使用对象前必须初始化,间接调用构造函数

MyArray.Input(1,&MyArray);
MyArray.Input(2,&MyArray);

printf(\"The elements of MyArray : %d,\t%d\",MyArray.Data[0],MyArray.Data[1]);
getch();

MyArray.Destructor(&MyArray); //使用对象后必须显式调用析构函数

return 0;

}


如果大家可以用C写出更加OO的code欢迎跟贴讨论。

[此贴子已经被作者于2007-9-11 19:28:11编辑过]

搜索更多相关主题的帖子: 面向对象 
2007-09-11 19:25
快速回复:[讨论]在C中实现面向对象
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017277 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved