关于c++派生类中虚函数的问题

如何判断派生类中这个函数是否是虚函数?书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之... 如何判断派生类中这个函数是否是虚函数?
书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。 我被搞懵了诶。如果派生类中没有用virtual定义函数,如何判断他是不是虚函数?
展开
 我来答
a526247082
推荐于2017-09-03 · TA获得超过182个赞
知道答主
回答量:81
采纳率:0%
帮助的人:69.1万
展开全部
一旦一个函数被声明为虚函数,那么他从该点之后的继承层次结构中都是虚函数,不管它在有没有再次声明是不是虚函数,有些程序员为了提高程序的清晰度,在继承结构中喜欢再次明确的声明这些虚函数.

至于“判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。”只是解释了什么是覆盖,派生类将基类中的虚函数重写即为覆盖。
sencesysu
2010-11-07 · 超过20用户采纳过TA的回答
知道答主
回答量:24
采纳率:0%
帮助的人:0
展开全部
虚函数必须要在基类用virtual修饰才能为虚函数,派生类若重定义该函数,则无论是否有virtual关键字都是虚函数。你要判断派生类中没有用virtual定义的函数是否为虚函数,则可以:在该函数标志特定的输出,如cout<<"Virtual Function!";然后定义一个基类的指针bP,指向新new的派生类对象,然后用bP调用所需判断的函数,看是否有输出特定的标志Virtual Function!,如果正确输出则说明是虚函数,其他情况则表明该函数不是虚函数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
檀木妍
2010-11-07 · TA获得超过470个赞
知道小有建树答主
回答量:390
采纳率:0%
帮助的人:411万
展开全部
比如b是一个派生类,f是b里面一个函数。
先去b的基类里找,如果发现f原来在某个基类中有的,看基类中f是不是虚函数,如果是,那不管b中f有没有virtual都是虚函数。
如果在基类中没有发现f的原型,则就看b中f自己有没有virtual了,有就是,没有就不是。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2010-11-07 · TA获得超过3954个赞
知道大有可为答主
回答量:1636
采纳率:77%
帮助的人:1213万
展开全部
如果是虚函数的话,在派生类中重新定义其函数体时,不会导致同名覆盖.当用基类指针指向派生类对象并调用虚函数时,执行的是在派生类中重新定义的虚函数的函数体.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Xuxu8511
2010-11-07 · TA获得超过388个赞
知道小有建树答主
回答量:1344
采纳率:0%
帮助的人:761万
展开全部
想用虚函数是:基类、父类都要定义成virtual类型的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式