您的位置:首页 > 编程语言 > C语言/C++

C语言实现面对对象编程

2015-07-19 23:18 465 查看
#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#define NEW(x) (x *)malloc(sizeof(x))

#define NAMESIZE 30

#define SEXSIZE 2

#define AGESIZE 4

typedef struct _STUDENT{

//Attributes

char name[NAMESIZE];

char sex[SEXSIZE];

char age[AGESIZE];

//Method

char * (*getName)(struct _STUDENT *student);

int (*getSex)(struct _STUDENT *student);

int (*getAge)(struct _STUDENT *student);

void * (*setName)(struct _STUDENT *student,char *name);

void (*setSex)(struct _STUDENT *student,int sex);

void (*setAge)(struct _STUDENT *student,int age);

}STUDENT,*LPSTUDENT;

void InitStudent(LPSTUDENT student);

char *getName(LPSTUDENT student);

int getSex(LPSTUDENT student);

int getAge(LPSTUDENT student);

void setName(LPSTUDENT student,char *name);

void setSex(LPSTUDENT student,int sex);

void setAge(LPSTUDENT student,int age);

int main(void)

{

LPSTUDENT student = NEW(STUDENT);

InitStudent(student);

student->setName(student,"aaa");

student->setAge(student,19);

student->setSex(student,1);

printf("Name:%s\n",student->getName(student));

printf("Age:%d\n",student->getAge(student));

printf("Sex:%s\n",student->getSex(student)==0?"Women":"Man");

return 0;

}

void InitStudent(LPSTUDENT student)

{

memset(student->name,0,sizeof(char)*NAMESIZE);

memset(student->sex,0,sizeof(char)*SEXSIZE);

memset(student->age,0,sizeof(char)*AGESIZE);

student->getName = getName;

student->getAge = getAge;

student->getSex = getSex;

student->setName = setName;

student->setSex = setSex;

student->setAge = setAge;

return;

}

char *getName(LPSTUDENT student)

{

char *name = (char *)malloc(sizeof(char)*NAMESIZE);

strcpy(name,student->name);

return name;

}

int getSex(LPSTUDENT student)

{

if (student->sex[0] == '0')

{

return 0;

}

else

{

return 1;

}

}

int getAge(LPSTUDENT student)

{

return atoi(student->age);

}

void setName(LPSTUDENT student,char *name)

{

strcpy(student->name,name);

return;

}

void setAge(LPSTUDENT student,int age)

{

char Age[AGESIZE];

itoa(age,Age,10);

strcpy(student->age,Age);

return;

}

void setSex(LPSTUDENT student,int sex)

{

char Sex[SEXSIZE];

itoa(sex,Sex,10);

strcpy(student->sex,Sex);

return;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: