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

如何判断派生类中这个函数是否是虚函数?
书上说,对基类有覆盖定义的就是虚函数,无论是否用virtual定义。但书上又说,判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。 我被搞懵了诶。如果派生类中没有用virtual定义函数,如何判断他是不是虚函数?

一旦一个函数被声明为虚函数,那么他从该点之后的继承层次结构中都是虚函数,不管它在有没有再次声明是不是虚函数,有些程序员为了提高程序的清晰度,在继承结构中喜欢再次明确的声明这些虚函数.

至于“判定覆盖的依据是两者都是虚函数,发生在派生类与基类之间。”只是解释了什么是覆盖,派生类将基类中的虚函数重写即为覆盖。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-07
虚函数必须要在基类用virtual修饰才能为虚函数,派生类若重定义该函数,则无论是否有virtual关键字都是虚函数。你要判断派生类中没有用virtual定义的函数是否为虚函数,则可以:在该函数标志特定的输出,如cout<<"Virtual Function!";然后定义一个基类的指针bP,指向新new的派生类对象,然后用bP调用所需判断的函数,看是否有输出特定的标志Virtual Function!,如果正确输出则说明是虚函数,其他情况则表明该函数不是虚函数。
第2个回答  2010-11-07
比如b是一个派生类,f是b里面一个函数。
先去b的基类里找,如果发现f原来在某个基类中有的,看基类中f是不是虚函数,如果是,那不管b中f有没有virtual都是虚函数。
如果在基类中没有发现f的原型,则就看b中f自己有没有virtual了,有就是,没有就不是。
第3个回答  2010-11-07
如果是虚函数的话,在派生类中重新定义其函数体时,不会导致同名覆盖.当用基类指针指向派生类对象并调用虚函数时,执行的是在派生类中重新定义的虚函数的函数体.
第4个回答  2010-11-07
想用虚函数是:基类、父类都要定义成virtual类型的

C++关于虚函数的描述的选择题,新手不会
A)虚函数是一个静态成员函数(静态是编译是实现 X)B)虚函数是一个非成员函数(这里意思是全局函数 X)C)虚函数既可以在函数说明时定义,也可以在函数实现时定义(这是纯虚函数 X)D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 ...

要实现动态联编,派生类中的虚函数该怎么样(是C++选择题)请高手指点。不...
类的多态性是由类的封装和继承来表现出来的,要实现动态函数的实现,则派生类继承了父类的虚函数后,要实现它,实现就是把它的定义写出来,实现它的函数体,所以是不需要改变虚函数的任意东西的,包括参数和返回的类型,这些必须跟父类声明时的一样,这样才能实现,所以答案选D ...

求教,c++中什么时候使用虚函数??
首先你要明白C++为什么要引进虚函数这个机制,虚函数就是在基类中被关键字virtual说明,并在派生类中重新定义的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。从以上的定义来看,需函数简单的说就是为了让基类指针能够指向派生类...

c++中基类指针指向派生类时,调用的虚函数是派生类的,为什么要这样啊...
图形类有一个函数area();用来求面积,但是由于不同图形求面积的方法不同,要由具体的派生类来决定,所以可以把它定义为一个虚函数,由派生类来重载这个函数,所以不同的派生类里面area()函数的函数体是不同的,创建一个基类指针*p,让他指向不同的派生类对象,p在调用area()方法时,就会调用派...

c++中的虚函数一定要在类中声明吗
虚函数机制,即派生类重载基类的同名函数。所以这个函数肯定是类的成员函数,既然是类的成员函数,当然要在类中声明了。

C++中 new的机制以及虚函数相关问题提问
A *a = new A(); a是A类型的指针,不是A类型对象,new出来的堆内存块才是A类型的对象。A a;此时a才是A类型对象。言归正传:a不是A类的对象,a是A类型的指针,它可以用来指向A类对象和A类的派生类对象,也即是说,可以将A类或A类的派生类的对象的地址赋值给A类型指针a。虚函数就是用来实现...

C++中虚函数的作用和虚函数的工作原理
虚函数在C++中实现多态性,主要作用在于实现动态绑定。基类定义虚函数,子类可以重写该函数。当子类重新定义了父类的虚函数后,当父类的指针指向子类对象的地址时,程序根据对象的实际类型动态调用子类的该函数,而不是父类的函数。这种动态调用发生在运行阶段,称为动态联编。非虚函数的静态联编效率更高,...

C++中虚函数的作用是什么?它应该怎么用呢?
C++中虚函数的用法:1、比如你有个游戏,游戏里有个虚基类叫「怪物」,有纯虚函数 「攻击」。2、派生出了三个子类「狼」「蜘蛛」「蟒蛇」,都实现了自己不同的「攻击」函数,比如狼是咬人,蜘蛛是吐丝,蟒蛇把你缠起来。3、出现好多怪物的时候就可以定义一个 虚基类指针数组,把各种怪物的指针给它...

c中的虚函数有什么作用
c++中的虚函数的作用如下:1、实现多态性,多态性是将接口与实现进行分离。2、实现以共同的方法,但因个体差异而采用不同的策略。3、在有可能成为父类时,虚函数可以被同名子类函数覆盖,安全系数高。4、虚函数的主要作用是对派生类实现动态联编。5、调用的函数在基类中被说明为虚函数,子类中该函数会...

C++虚表问题
既然有一个指针指向了虚表,这个类派生后,在派生类中就不必再创建虚表,如果派生类还有自己的虚函数,那么只在派生类中创建该虚函数的一个虚表,产生一个指向该虚表的指针。为每个类设置虚表,初始化虚指针,为虚函数调用插入代码都是自动发生的,不必担心这些。(我看到过虚继承下虚表问题的分析,直接...

相似回答