C和C++实现方式

C++是一种具备面向对象能力的编程语言,所以,用 C++来表达“我吃饭”这样一件事时,它的代码风格
贴近这种人类的自然语言,即:我.吃(饭);“我”是一个对象,“吃”是“我”所属对象(人类)的一
个函数,而“饭”是函数参数。 
换成 C 语言,因为它不具备面向对象的设计思想,所以,它只能说成:“吃(我,饭)”。“吃”是函
数,“我”和“饭”是两个参数。没有人规则一定要把 “我”作为第一个参数,你尽可写成 “吃(饭,我)”。

二者比较,面向对象的最基ᴀ的好处或许您已经有所体会:自然,从而不容易出错。



我们说
过世界是由“数据”和“动作”组成的。光能定义出各种数据类型,还只是编程世界的一半。你可能会说,
我们有函数啊,函数不是可以表达“动作”? 
没错,比如说,宝宝肯定有“吃”的动作,所以我来声明一个“吃”的函数。为了直观,我们的函数命
名为“Chi”。并且我们假充有一种数据类型叫“饭”,同样用拼音 Fan 表示,首字母大写,而小写的 fan
用来做形参。 
 void Chi(Fan fan); 
 乍一看,感觉这个函数这样声明也就对了。“吃饭”函数嘛,有“吃”又有“饭”……可仔细一想,
谁吃饭啊?这个光有吃的动作和吃的东西,和我们前面的“宝宝”数据类型有何关系?所以,显然不够,
需要再加一个参数,用于传一个“要吃饭”的宝宝进去。因此函数变成: 
 void Chi(BaoBao bb, Fan fan); 
 得,“吃我饭”的表达出来了。过程化的编程,其设计重在关心“过程”,比如:“如何吃”,但这
个世界要求我们完整地关心“谁?如何吃?吃什么?”。事实上,同一样一个“吃”,宝宝吃的动作,和
一个大男人吃的动作;或者,吃饭还是吃奶的动作?怕是完全不一样。如果真写,就不得不写很多版ᴀ的
“吃”这一函数: 
假设用 DNR 表大男人(晕,好像大女人也可以?): 
void DNRChi(DNR dnr, PingGuo pg); //吃函数版ᴀ一:大男人吃苹果
void DNRChi(DNR dnr,Fan fan); //吃函数版ᴀ二:大男人吃饭
void BaoBaoChi(BaoBao bb, Nai nai); //吃函数版ᴀ三:宝宝吃奶
void BaoBaoChi(BaoBao bb, Fan fan); //吃函数版ᴀ四:宝宝吃饭
...... 
 这样的函数还可以有很多。函数多或许并没有错,必竟所要表达事物ᴀ来就复杂。然而问题是我们如
何去理解,区分,记忆这些函数呢?仅靠函数名和函数参数的不同吗?在超市付款时,看过收款员拉开过
放钱的小抽屉吗?拉开一看,都是钱,但 10 元的 5 元,100 元的及硬币分门别类地放好……聪明的你一定
会提出:如果能把函数也归类就好了……这就有了“类”,英文称为:class。 
 请仔细看,下面示例的 class 定义里,加入了一个函数: 
 class BaoBao 

char xingMing[11]; //用字符数组,来存储姓名
int shenGao; //身高,整型
float tiZhong; //体重,实型
 void Chi(Fan fan); //加入“吃”的函数。 
}; 
 这算是一个“突变”——我们一直说着的“动作”与“数据”从这里开始合二为一,表面看来或许不
过如此:无非是在类的定义里,同时可以包括数据及函数。然而却由此开启了“面向对象”世界之门。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值