如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数。这句话为什么不对?

如题所述

第1个回答  2012-09-19
要看virtual修饰的是哪个函数啊 如果virtual修饰的是析构函数 那就不对了呀追问

析构函数为什么就不是虚函数了?能否说的再详细一些,不胜感激

追答

额 不好意思啊 我看问题看错了。。。我还以为是虚类 上面问题我也不是太清楚额

追问

没事。thank you all the same

为什么 虚函数是用virtual关键字说明的成员函数 这句话错误?
因为虚函数virtual具有传递性,即子类中对父类的虚函数的重写,虽未加virtual,但它也是一个虚函数。

C++:虚函数中,virtual可以写在返回类型的后面吗?
这个没有顺序的区别,不过virtual放在前面更醒目而已,函数返回类型大多数时候不是很关心,声明虚函数的声明更让人关注

基类中声明了虚函数后,派生类中对应的函数也必须声明为虚函数 没有虚...
全错。派生类不必再声明成虚函数了,只要基类声明就可以,基类声明虚函数后,会建一张虚函数表。一旦一个函数被声明为虚函数,从该点之后的继承层次结构中都是虚函数,不管它在有没有再次声明是不是虚函数,有些程序员为了提高程序的清晰度,在继承结构中喜欢再次明确的声明这些虚函数.至于“判定覆盖的...

C++中virtual关键字的用法
在分析虚函数时,首先需要明确它与函数重载的区别。重载函数要求它们在同一个类中定义,而虚函数则允许在不同类中覆盖,这是多态性的体现。此外,重载函数基于参数类型(或数量、顺序)来决定调用哪个函数,而虚函数则基于对象的实际类型来决定调用哪个函数。虚函数前必须使用`virtual`关键字,而函数重载则...

既然c++的非virtual的函数可以重定义,virtual函数相比非vi
cpp class Base { public:void fly() { cout << "我飞飞飞" << endl; } };class Derived : public Base { public:void fly() override { cout << "我飞得更高" << endl; } };在上述代码中,`fly()`函数在`Derived`类中重定义,但并未声明为虚函数。当创建`Derived`对象并调用`...

C++使用虚函数的时候,子类也要使用virtual关键字吗
c++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此,在子类重新声明该虚函数时,可以加,也可以不加,但习惯上每一层声明函数时都加virtual,使程序更加清晰。

什么是虚函数
具体来说,虚函数是在基类中通过关键字virtual声明的。当在派生类中重写虚函数时,可以在派生类的函数定义前加上相同的关键字来覆盖基类的实现。如果没有被派生类重写,那么虚函数的行为与基类中的普通成员函数一样。这种特性使得虚函数特别适用于创建通用的算法框架或者插件式的扩展系统,为子类提供了一个...

c++中虚继承、虚基类、虚函数、纯虚函数
纯虚函数使用关键字virtual,并在其后面加上=0。如果试图实例化一个抽象类,编译器则会阻止这种操作。当继承一个抽象类时,必须实现所有的纯虚函数,否则由抽象类派生的类也是一个抽象类。Virtual void fun() = 0;告诉编译器在vtable中为函数保留一个位置,但在这个特定位置不放地址。虚析构函数是...

析构函数为什么是虚函数
增加了virtual机制,在进行编译的时候,看到virtual就会自动将方法指向b的地址,于是我们就可以通过设置机制找到b的析构函数。为了改变这个,就出现了虚析构函数 只要将基类的析构函数设为virtual型,则所有派生类都自动将析构函数设为virtual型,这样子就保证了不会因为析构函数未被调用而导致内存泄露。

虚函数和抽象函数有什么区别
简单来说虚函数(Virtual)已经包含了也必须包含默认的实现,所以在派生类中可以重新实现也可以不实现这些虚函数。抽象函数(abstract)没有提供默认实现,所以在派生类中必须实现这些抽象函数。接口中的函数类似于抽象函数,也不提供默认实现,实现接口的类也必须实现这些函数。但接口可用于多继承,即,类只能...

相似回答