求教,c++中什么时候使用虚函数??

 我来答
帖承德qv
2012-04-22 · TA获得超过645个赞
知道小有建树答主
回答量:95
采纳率:100%
帮助的人:75.4万
展开全部
首先你要明白C++为什么要引进虚函数这个机制,
虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。
从以上的定义来看,需函数简单的说就是为了让基类指针能够指向派生类中与基类同名的函数而引进的,举个简单的例子,1:你定义了一个“图形类”这样的基类,然后再类中定义了一个求图形周长的函数(不是虚函数);2:现在再定义这个“图形类”的一个派生类“三角形类”,中也含有一个求三角形周长的函数(不是虚函数);3:再定义一个这个“图形类”的一个派生类“矩形类”,中也含有一个求矩形周长的函数(不是虚函数);4:现在回到主函数,你定义了这个“图形类”的一个指针(即基类的指针),根据C++的规定,基类的对象指针可以指向它的公有派生类的对象,但是当其指向公有的派生类对象时,它只能访问派生类中从基类继承来的成员,而不能访问公有派生类中定义的成员。
所以,你定义的这个指针是不能够指向“三角形”和“矩形”类中定义的那个周长函数,但是,如果你在基类中将这个周长函数定义为虚函数,则这样的代码是允许的,而且能够到达预期目的。
为什么呢?你想想你在基类中只定义一个基类指针,可以通过改变基类指针所指的对象(即派生类对象),就可以通过指针访问这个虚函数(虚函数的函数原型是一样的)而完成不同图形周长的计算和输出,显然,这是很值得提倡的,因为你只需“p->perimeter;”一个代码就能完成很多图形的工作。
不知道,你能否明白,总的来说就是虚函数就是为了让基类指针(或引用)能访问派生类中定义的成员。

参考资料: 该文中部分定义出自《C++面向对象程序设计教程(第3版)》(作者:陈维兴,林小茶)

育知同创教育
2018-07-30 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。

虚函数就是为了让基类指针(或引用)能访问派生类中定义的成员。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2012-04-22 · TA获得超过1442个赞
知道大有可为答主
回答量:4250
采纳率:60%
帮助的人:1280万
展开全部
虚函数的应用很多,其中最常用的是虚函数的覆盖技术
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunnyfulin
2012-04-22 · TA获得超过465个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:187万
展开全部
虚函数的作用是实现动态联编,也就是在程序的运行阶段动态地选择合适的成员函数,在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,在派生类中重新定义的函数应与虚函数具有相同的形参个数和形参类型。以实现统一的接口,不同定义过程。如果在派生类中没有对虚函数重新定义,则它继承其基类的虚函数。

比如:基类定义一个多边形,其种虚函数是求面积;
这个基类有多个派生类,派生类中对从基类继承来的虚函数求面积重定义,
如,派生类三角形,定义了求面积的方法是“半底高”;
派生类正方形,定义了求面积的方法是“边平方”;
……等等

以上的基类中的虚函数纯粹就是为了派生类的重定义而存在……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式