现在的位置: 首页 > 综合 > 正文

虚函数

2017年08月18日 ⁄ 综合 ⁄ 共 1429字 ⁄ 字号 评论关闭

http://blog.chinaunix.net/uid-25749806-id-321984.html

你一定不要被 "虚函数 "这个词吓着,我一开始就被它吓着了,以为这又是个什么东东。 

现在我就把我脑子里的虚函数聊聊,各位大见笑了: 

在我们现实生活中有很多词,比如“开”这个词,现在有一辆汽车和一辆自行车在你面前,我对你说,“请把这个车开起来!” 

当我指向汽车时,你就会加油门,然后转方向盘,汽车开起来。如果我指向自行车时,你就会两脚一登,把自行车开起来。你看,我对两种东西(汽车、自行车)用同一句话表达,而你会跟据我的指向去做不同的两件事(一个加油门,一个用两脚)。是不是很奇怪!!!!然后说一句,“你表什么表,我又不是小孩。” 因为我们有脑子,所以觉得这个很自然。 

呵呵,但是计算机会像人一样去思考吗??不会,因为计算机很表(一会儿我会跟你说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> > 


这都是一级棒的书。

【上篇】
【下篇】

抱歉!评论已关闭.