Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1336040
  • 博文数量: 177
  • 博客积分: 3640
  • 博客等级: 中校
  • 技术积分: 1778
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-27 16:51
文章分类

全部博文(177)

文章存档

2014年(1)

2013年(10)

2012年(3)

2011年(163)

分类: LINUX

2011-05-17 20:11:11

你一定不要被 "虚函数 "这个词吓着,我一开始就被它吓着了,以为这又是个什么东东。 
现在我就把我脑子里的虚函数聊聊,各位大见笑了: 
在我们现实生活中有很多词,比如“开”这个词,现在有一辆汽车和一辆自行车在你面前,我对你说,“请把这个车开起来!” 
当我指向汽车时,你就会加油门,然后转方向盘,汽车开起来。如果我指向自行车时,你就会两脚一登,把自行车开起来。你看,我对两种东西(汽车、自行车)用同一句话表达,而你会跟据我的指向去做不同的两件事(一个加油门,一个用两脚)。是不是很奇怪!!!!然后说一句,“你表什么表,我又不是小孩。” 因为我们有脑子,所以觉得这个很自然。 
呵呵,但是计算机会像人一样去思考吗??不会,因为计算机很表(一会儿我会跟你说C++在这方面是怎么现实的,也就是它的对像模型) 
我们写程序时,用函数来表达,用函数时就用函数名来调用,一个函数代表一个意思,对吧。但是现在我们想让一个函数表达两个意思,或是更多的意思,这个能行吗??能!!!这就是OO思想,面向对像,面向对像说白了就是一句话“万事万物,皆对像”(面向对象语言可以像人类一个去思考问题)C++、JAVA都是面向对像语言。 
“虚函数”???能吗??当然我刚才说了,一般的函数不可能做到这一点,因为一个函数只有一个意思,现在“虚函数”就出来了,它可以完成这种状态,这就是“多态性”。“虚函数”就是会多态性而产生的。
我不知道你懂了多少,我知道如果没有程序你无法了解。但是我忘记虚函数怎么拼写了。不好意思, 
class   交通工具 

    虚函数   开(){} 


class   汽车   public   交通工具    
{   开(){cout < < "加油门,然后转方向盘,汽车开起来 ";} 

class   自行车   public   交通工具 
{   开(){cout < < "两脚一登,把自行车开起来 ";} 


main() 

汽车   aaa=new   汽车()   ;         //让我们来做个汽车   
自行车   bbb=new   自行车()   ;//让我们来做个自行车 
交通工具   ccc; 
ccc=aaa; 
ccc.开();//注意 
ccc=bbb; 
ccc.开(); //注意 
} 

结果: 

加油门,然后转方向盘,汽车开起来 
两脚一登,把自行车开起来 

你看,我们用一句话ccc.开()产生了两个结果。 
我现在就以为你是理解了吧,对不起我只能说到这个程序了,如果你在我身边我一定把你教会,但是在这里我无能了,我水平很低,也是学了不多时。 
现在让我们来看看C++是怎么来实现这个的吧,为什么一个语句会做两种事。 
嘿嘿,其实我们就是调用了两个函数而已(我知道你已经看到了是两个函数)可是你或许会问,那为什么在这里会用一句话做两种不同的事???? 
这里有几个条件:一,汽车和自行车必须是交通工具 
class   汽车   public   交通工具  
class   自行车   public   交通工具 
只有这样我们能可以用“交通工具”去做不同的事。看看前面的话“把车开起来”(汽车是一种车,所以我说把车开起来,你就去把汽车开起来了)(自行车也是一种车,所以我说把车开起来时你就把自行车也开起来了)因为他们都是车。 
<<thinking   in   c++> >   中文<<C++编程思想>> 
<<C++primer> >   < <深入浅出MFC> > 

这都是一级棒的书。
阅读(6735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~