首页 > 试题广场 >

下面关于虚函数的描述,错误的是?

[单选题]
下面关于虚函数的描述,错误的是
  • 在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
  • 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数
  • 虚函数可以是另一个类的友元函数,但不能是静态成员函数
  • 基类中说明的纯虚函数在其任何需要实例化的派生类中都必须实现
派生类不必再声明成虚函数了,只要基类声明就可以.基类声明虚函数后,会建一张虚函数表.除非你要改变功能,就需要再声明!
编辑于 2016-04-08 10:22:56 回复(0)
更多回答
推荐
B
一旦在基类中指定某成员函数为虚函数,不管在公有派生类中是否给出virtual声明,派生类对其重载定义的成员函数均为虚函数,为增强可读性,通常在派生类中也加入virtual关键字。
编辑于 2015-02-04 21:17:13 回复(2)
【拓展】友元函数不能是虚函数,因为友元函数不可以继承,对于没有继承特性的函数,因而是没有虚函数。但是虚函数可以是另一个类的友元函数。
public class A
{
   private:
        int d;
  public:
    friend B::Geta(A a);
}
public class B
{
  public:
    virtual int Geta(A &a)
   {
       return a->d;
   }
}
这里Geta是class B的一个虚拟成员函数
同时它也是class A的一个友元函数,所以他能够存取A的私有变量d
发表于 2017-04-11 16:06:59 回复(3)
在基类中声明了虚函数,在派生类中如果不声明,则默认为虚函数。
发表于 2016-05-23 14:22:55 回复(0)
说下C
静态成员函数需要用类名来调用,如果静态成员函数声明为虚函数,则调用时依旧需要用类名。不能够通过基类对象指针或引用来实现多态。
发表于 2018-08-06 20:13:34 回复(1)
友元不是不能是虚函数吗
发表于 2016-08-02 09:09:52 回复(5)
一旦在基类中指定某成员函数为虚函数,不管在公有派生类中是否给出virtual声明,派生类对其重载定义的成员函数均为虚函数,为增强可读性,通常在派生类中也加入virtual关键字。
发表于 2022-05-08 14:38:09 回复(0)
虚函数需要通过对象来调用,实例中有指向虚表的指针this -> ptr
发表于 2020-09-11 16:07:36 回复(0)
D没有好好看题
发表于 2019-03-15 22:33:10 回复(0)
在基类中声明为虚函数的,派生累中自动声明为虚函数
发表于 2019-02-23 21:22:42 回复(0)
虚函数可以是另一个类的友元函数,但不能是静态成员函数
发表于 2018-02-03 09:41:46 回复(0)
只有类的成员函数及类的析构函数可以作为虚函数,友元函数不能作为虚函数
答案应为BC
http://www.cnblogs.com/NeilZhang/p/5427872.html
发表于 2017-03-30 21:01:23 回复(0)
c++primer 第477页:一旦函数在基类中声明为虚函数,它就一直为虚函数,派生类无法改变该函数为虚函数这一事实。派生类重定义虚函数时,可以使用virtual保留字,但不是必须这样做。
发表于 2017-03-07 18:14:41 回复(0)
D选项也不对啊,不实现纯虚函数就不能实例化的
发表于 2016-10-28 17:50:07 回复(0)
虚函数可以是友元函数?
发表于 2015-07-30 13:46:24 回复(0)
应该选择D。
B:基类中声明了虚函数后,派生类无论是否说明都是虚函数。
D:基类中有纯虚函数, 在派生类中可以实现这个纯虚函数,也可以不实现这个函数。
如果派生类中没有实现这个函数,那么等于派生类中也有了纯虚函数,那么派生类也变成了抽象类,不能实例化。

发表于 2015-07-28 23:48:16 回复(3)
答案:B
基类为虚函数,派生类可以覆盖重写,可以还是虚函数,也可以不是虚函数
发表于 2015-01-15 20:15:59 回复(0)