你一定不要被 "虚函数 "这个词吓着,我一开始就被它吓着了,以为这又是个什么东东。
现在我就把我脑子里的虚函数聊聊,各位大见笑了:
在我们现实生活中有很多词,比如“开”这个词,现在有一辆汽车和一辆自行车在你面前,我对你说,“请把这个车开起来!”
当我指向汽车时,你就会加油门,然后转方向盘,汽车开起来。如果我指向自行车时,你就会两脚一登,把自行车开起来。你看,我对两种东西(汽车、自行车)用同一句话表达,而你会跟据我的指向去做不同的两件事(一个加油门,一个用两脚)。是不是很奇怪!!!!然后说一句,“你表什么表,我又不是小孩。” 因为我们有脑子,所以觉得这个很自然。
呵呵,但是计算机会像人一样去思考吗??不会,因为计算机很表(一会儿我会跟你说C++在这方面是怎么现实的,也就是它的对像模型)
我们写程序时,用函数来表达,用函数时就用函数名来调用,一个函数代表一个意思,对吧。但是现在我们想让一个函数表达两个意思,或是更多的意思,这个能行吗??能!!!这就是OO思想,面向对像,面向对像说白了就是一句话“万事万物,皆对像”(面向对象语言可以像人类一个去思考问题)C++、JAVA都是面向对像语言。
“虚函数”???能吗??当然我刚才说了,一般的函数不可能做到这一点,因为一个函数只有一个意思,现在“虚函数”就出来了,它可以完成这种状态,这就是“多态性”。“虚函数”就是会多态性而产生的。
现在我就把我脑子里的虚函数聊聊,各位大见笑了:
在我们现实生活中有很多词,比如“开”这个词,现在有一辆汽车和一辆自行车在你面前,我对你说,“请把这个车开起来!”
当我指向汽车时,你就会加油门,然后转方向盘,汽车开起来。如果我指向自行车时,你就会两脚一登,把自行车开起来。你看,我对两种东西(汽车、自行车)用同一句话表达,而你会跟据我的指向去做不同的两件事(一个加油门,一个用两脚)。是不是很奇怪!!!!然后说一句,“你表什么表,我又不是小孩。” 因为我们有脑子,所以觉得这个很自然。
呵呵,但是计算机会像人一样去思考吗??不会,因为计算机很表(一会儿我会跟你说C++在这方面是怎么现实的,也就是它的对像模型)
我们写程序时,用函数来表达,用函数时就用函数名来调用,一个函数代表一个意思,对吧。但是现在我们想让一个函数表达两个意思,或是更多的意思,这个能行吗??能!!!这就是OO思想,面向对像,面向对像说白了就是一句话“万事万物,皆对像”(面向对象语言可以像人类一个去思考问题)C++、JAVA都是面向对像语言。
“虚函数”???能吗??当然我刚才说了,一般的函数不可能做到这一点,因为一个函数只有一个意思,现在“虚函数”就出来了,它可以完成这种状态,这就是“多态性”。“虚函数”就是会多态性而产生的。
我不知道你懂了多少,我知道如果没有程序你无法了解。但是我忘记虚函数怎么拼写了。不好意思,
class 交通工具
{
虚函数 开(){}
}
class 汽车 public 交通工具
{ 开(){cout < < "加油门,然后转方向盘,汽车开起来 ";}
}
class 自行车 public 交通工具
{ 开(){cout < < "两脚一登,把自行车开起来 ";}
}
main()
{
汽车 aaa=new 汽车() ; //让我们来做个汽车
自行车 bbb=new 自行车() ;//让我们来做个自行车
交通工具 ccc;
ccc=aaa;
ccc.开();//注意
ccc=bbb;
ccc.开(); //注意
}
结果:
加油门,然后转方向盘,汽车开起来
两脚一登,把自行车开起来
你看,我们用一句话ccc.开()产生了两个结果。
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 交通工具
只有这样我们能可以用“交通工具”去做不同的事。看看前面的话“把车开起来”(汽车是一种车,所以我说把车开起来,你就去把汽车开起来了)(自行车也是一种车,所以我说把车开起来时你就把自行车也开起来了)因为他们都是车。
现在让我们来看看C++是怎么来实现这个的吧,为什么一个语句会做两种事。
嘿嘿,其实我们就是调用了两个函数而已(我知道你已经看到了是两个函数)可是你或许会问,那为什么在这里会用一句话做两种不同的事????
这里有几个条件:一,汽车和自行车必须是交通工具
class 汽车 public 交通工具
class 自行车 public 交通工具
只有这样我们能可以用“交通工具”去做不同的事。看看前面的话“把车开起来”(汽车是一种车,所以我说把车开起来,你就去把汽车开起来了)(自行车也是一种车,所以我说把车开起来时你就把自行车也开起来了)因为他们都是车。
<<thinking in c++> > 中文<<C++编程思想>>
<<C++primer> > < <深入浅出MFC> >
这都是一级棒的书。
<<C++primer> > < <深入浅出MFC> >
这都是一级棒的书。
转载自:http://blog.chinaunix.net/uid-25749806-id-321984.html