C 语言部分实现面向对象的继承特性【重构】
来源:互联网 发布:曾经很火的网络歌曲 编辑:程序博客网 时间:2024/06/05 18:56
之前的一个版本中,在“子类”对象构造时,采用动态对象申请“父类”,然后在内存拷贝到“子类的对象”中,在“子类”的“构造函数”结束后,再让临时“父类”对象“析构”。对于本文中的例子,animal本身是一个纯粹的抽象概念,不应该被实例化,因此animal类更像纯虚基类,仅仅提供接口就可以了,不用对其“实例化”。
下面我对这个例子进行了重构(这里仅仅附上修改的部分,请参考原文):
//animal_base.h:
(Omit unchanged part)
/* 删除初始化函数 */
//animal_t * animal_init();
/* 删除内存释放函数 */
//void animal_die(animal_t *animal);
//animal_base.c
//删除以下函数的实现:
// animal_t * animal_init(){}
// void animal_die(animal_t *animal){}
//cat.c
// 修改cat的初始化函数
cat_t * cat_init()
{
cat_t* cat = (cat_t *)malloc(sizeof(cat_t));
animal_t temp_animal;
temp_animal.animal_ops.eat = eat;
temp_animal.animal_ops.walk = walk;
temp_animal.animal_ops.talk = talk;
cat->base = temp_animal;
return cat;
}
//dog.c
// 修改dag的初始化函数
dog_t * dog_init()
{
dog_t *dog = (dog_t *)malloc(sizeof(dog_t));
animal_t temp_animal;
temp_animal.animal_ops.eat = eat;
temp_animal.animal_ops.walk = walk;
temp_animal.animal_ops.talk = talk;
dog->base = temp_animal;
return dog;
}
题后:
程序员应该“每日三省其身”,对于前一日写的代码,每天早晨抽时间研究一下是否需要重构。写代码应该像计算数学题一样,将其尽可能实现其最优美的公式。谁说程序员是一份“青春饭”,程序员和医生一样,需要大量的经验总结和积累。
0 0
- C 语言部分实现面向对象的继承特性【重构】
- C 语言部分实现面向对象的继承特性
- C语言面向对象的实现---继承性
- C语言面向对象的实现---继承性
- C语言面向对象的实现---继承性
- C语言实现C++面向对象语言多态特性
- 面向对象的特性:继承
- C++面向对象语言的重要特性之一 继承
- C++面向对象语言的重要特性之一 继承 .
- C 语言面向对象-- 继承
- C实现面向对象的继承
- 面向对象语言特性之继承
- C语言实现C++中面向对象特性
- C语言实现面向对象之继承性
- 面向对象之继承,封装,多态c语言实现
- C语言实现面向对象之继承性
- c语言实现面向对象之继承,多态
- C语言实现面向对象的思想(实现封装、继承和多态)
- Linux 系统命令及其使用详解(大全)
- 设置默认值;this.defaultValue
- GCD介绍(一):基本概念和Dispatch Queue
- 如何查看oracle所有的表空间
- 黑马程序员——代理
- C 语言部分实现面向对象的继承特性【重构】
- 一个汉字占几个字节的问题
- zoj 1402 Magnificent Meatballs
- UVA - 10163Storage Keepers(01背包)
- Python 正则表达式查找重复单词
- MFC控件随对话框大小改变而改变
- Maven管理Jar包时,导出项目原理啊
- ssh实现分页查询
- 我这有套安卓的视频给大家分享下