C++关于虚函数的问题,求大神帮忙解答下,谢谢

C++关于虚函数的问题,求大神帮忙解答下,谢谢1.再基类和派生类中都定义了同名虚函数,此时根据基类指针调用这两个虚函数也分别怎么做。2.在基类中定义一个非虚函数,而在派生... C++关于虚函数的问题,求大神帮忙解答下,谢谢1. 再基类和派生类中都定义了同名虚函数,此时根据基类指针调用这两个虚函数也分别怎么做。
2.在基类中定义一个非虚函数,而在派生中定义了同名虚函数,此时要分别调用它们要怎么操作基类指针
3.能不能同名函数基类为虚,派生不为虚。
展开
 我来答
hatianxiao
2017-03-18 · TA获得超过2046个赞
知道大有可为答主
回答量:2295
采纳率:77%
帮助的人:1246万
展开全部
  1. 再基类和派生类中都定义了同名虚函数,此时根据基类指针调用这两个虚函数也分别怎么做。

    光同名不行,如果同名,但是参数表有所不同,那么派生类的虚函数(必须写virtual字样,如果你希望它也虚函数的话),他们算是两条不同的虚函数体系线,即分别是各自虚函数体系的起点,而且因为同名隐藏机制,派生类的同名函数会遮蔽基类的,至于基类调用,你可以这么想,基类指针能看见的内容都是依据其自身类型的,所以如果同名不同参,那么实际上并不会调用派生类中的同名函数,此时,如果那个函数没有virtual字样的话,那个派生类中的函数甚至只是一个普通的成员函数了,和虚函数都没有关系了。

2.在基类中定义一个非虚函数,而在派生中定义了同名虚函数,此时要分别调用它们要怎么操作基类指针

非虚函数就是普通成员函数,你说应该怎么调用,派生类中的同名虚函数只对这个派生类的派生类起虚函数作用,而且遵循我对第一个问题的回答,虚函数自起点位置向更下层的派生类才有影响,跟上层的类没啥关系的。
3.能不能同名函数基类为虚,派生不为虚。

我想你看了前面2个问题的回答,这个问题你自己都能回答了。


补充说一句:如果只同名,而不想归于同一个虚函数体系,那么我个人建议对非虚函数换个名字吧,或者虚函数使用v_fun或fun_v这样的,以示区别,因为不换名字的话,那么使用者会困惑的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式