关于c++派生类中虚函数的问题
如何判断派生类中这个函数是否是虚函数?书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之...
如何判断派生类中这个函数是否是虚函数?
书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。 我被搞懵了诶。如果派生类中没有用virtual定义函数,如何判断他是不是虚函数? 展开
书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。 我被搞懵了诶。如果派生类中没有用virtual定义函数,如何判断他是不是虚函数? 展开
5个回答
展开全部
虚函数必须要在基类用virtual修饰才能为虚函数,派生类若重定义该函数,则无论是否有virtual关键字都是虚函数。你要判断派生类中没有用virtual定义的函数是否为虚函数,则可以:在该函数标志特定的输出,如cout<<"Virtual Function!";然后定义一个基类的指针bP,指向新new的派生类对象,然后用bP调用所需判断的函数,看是否有输出特定的标志Virtual Function!,如果正确输出则说明是虚函数,其他情况则表明该函数不是虚函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比如b是一个派生类,f是b里面一个函数。
先去b的基类里找,如果发现f原来在某个基类中有的,看基类中f是不是虚函数,如果是,那不管b中f有没有virtual都是虚函数。
如果在基类中没有发现f的原型,则就看b中f自己有没有virtual了,有就是,没有就不是。
先去b的基类里找,如果发现f原来在某个基类中有的,看基类中f是不是虚函数,如果是,那不管b中f有没有virtual都是虚函数。
如果在基类中没有发现f的原型,则就看b中f自己有没有virtual了,有就是,没有就不是。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是虚函数的话,在派生类中重新定义其函数体时,不会导致同名覆盖.当用基类指针指向派生类对象并调用虚函数时,执行的是在派生类中重新定义的虚函数的函数体.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
想用虚函数是:基类、父类都要定义成virtual类型的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询