小猫与小狗
来源:互联网 发布:学生空间七天网络登录 编辑:程序博客网 时间:2024/04/26 19:19
dog.h
注:狗的结构体是继承了动物的结构体,当然也在这里定义了狗的动作(叫)这个类型
#ifndef DOG_H__
#define DOG_H__
#include "animal.h"
typedef struct dog_t Cdog ;
struct dog_t...{
Canimal super;
};
typedef struct...{
void (* bark)(Cdog *this);
}dog_vmt;
void dog_Init(Cdog* this);
void dog_Bark(Cdog* this);
#endif
#define DOG_H__
#include "animal.h"
typedef struct dog_t Cdog ;
struct dog_t...{
Canimal super;
};
typedef struct...{
void (* bark)(Cdog *this);
}dog_vmt;
void dog_Init(Cdog* this);
void dog_Bark(Cdog* this);
#endif
dog.c
狗叫的实体函数付值
在初始化的时候将狗的动作付给狗实体,也就是传入
#include "dog.h"
#include <stdio.h>
static const dog_vmt vmt = ...{dog_Bark};
void dog_Init(Cdog* this)...{
animal_Init(this);
this->super.vmt = (const animal_VMT*)&vmt;
}
void dog_Bark(Cdog* this)...{
// fprinf(stdout, "wangwang ");
}
#include <stdio.h>
static const dog_vmt vmt = ...{dog_Bark};
void dog_Init(Cdog* this)...{
animal_Init(this);
this->super.vmt = (const animal_VMT*)&vmt;
}
void dog_Bark(Cdog* this)...{
// fprinf(stdout, "wangwang ");
}
cat.h
#ifndef CAT_H__
#define CAT_H__
#include "animal.h"
typedef struct cat_t Ccat;
typedef struct cat_t...{
Canimal super;
};
typedef struct ...{
void (*bark)(Ccat* this);
}cat_vmt;
void cat_Init(Ccat* this);
void cat_Bark(Ccat* this);
#endif
#define CAT_H__
#include "animal.h"
typedef struct cat_t Ccat;
typedef struct cat_t...{
Canimal super;
};
typedef struct ...{
void (*bark)(Ccat* this);
}cat_vmt;
void cat_Init(Ccat* this);
void cat_Bark(Ccat* this);
#endif
cat.c
#include "cat.h"
#include <stdio.h>
static const cat_vmt vmt = ...{ cat_Bark };
void cat_Init(Ccat* this)...{
animal_Init(this);
this->super.vmt = (const animal_VMT*)&vmt;
}
void cat_Bark(Ccat* this)...{
fprintf(stdout, "miaomiao ");
}
#include <stdio.h>
static const cat_vmt vmt = ...{ cat_Bark };
void cat_Init(Ccat* this)...{
animal_Init(this);
this->super.vmt = (const animal_VMT*)&vmt;
}
void cat_Bark(Ccat* this)...{
fprintf(stdout, "miaomiao ");
}
animal.h
#ifndef ANIMAL_H__
#define ANIMAL_H__
typedef struct animal_t Canimal;
typedef struct ...{
void (*bark)(Canimal* this);
}animal_VMT;
struct animal_t...{
animal_VMT* vmt;
};
void animal_Init(Canimal* this);
void animal_Bark(Canimal* this);
#define animal_Bark(this)
(((Canimal*)(this))->vmt->bark((Canimal*)this))
#endif
#define ANIMAL_H__
typedef struct animal_t Canimal;
typedef struct ...{
void (*bark)(Canimal* this);
}animal_VMT;
struct animal_t...{
animal_VMT* vmt;
};
void animal_Init(Canimal* this);
void animal_Bark(Canimal* this);
#define animal_Bark(this)
(((Canimal*)(this))->vmt->bark((Canimal*)this))
#endif
animal.c
#include "animal.h"
void animal_Init(Canimal* this)...{
}
void animal_Init(Canimal* this)...{
}
main.c
#include "dog.h"
#include "cat.h"
#include "animal.h"
int main()...{
Ccat neko;
Cdog yinu;
dog_Init((Canimal*)&yinu);
cat_Init((Canimal*)&neko);
animal_Bark((Canimal*)&neko);
animal_Bark((Canimal*)&yinu);
return 0;
}
#include "cat.h"
#include "animal.h"
int main()...{
Ccat neko;
Cdog yinu;
dog_Init((Canimal*)&yinu);
cat_Init((Canimal*)&neko);
animal_Bark((Canimal*)&neko);
animal_Bark((Canimal*)&yinu);
return 0;
}
- 小猫与小狗
- 小狗与蝴蝶 官网
- 小狗与蝴蝶 是什么
- 驴子与小狗
- 铁匠与小狗
- 小记 小狗与北京
- 小兔与小猫
- 小猫
- 栈与队列,小猫钓鱼
- 小狗写真集
- 小狗不见了
- 小狗汤姆
- 大个子小狗
- 小狗照片
- 再见 小狗
- 一个小狗
- 小狗踢足球
- 用小猫统计探查discuz后台数据库中的表与数据
- 一个自动ftp的脚本(转)
- 客户端 打印代码
- 测试一下 csdn的blog
- vb.net中对Repeater控件进行分页显示
- VC读写INI文件
- 小猫与小狗
- CSS入门参考
- 安装Linux的五种方法和心得
- 一个刚刚编写的监控主机是否可以ping通的脚(转)
- 在C++中的ODBC API数据库编程
- 地址本的脚本
- 最小化安装Ubuntu
- asp中split()方法的应用
- 标签前面的小点样式