首页 > 试题广场 >

关于虚函数和纯虚函数,以下说法正确的是()?

[不定项选择题]

关于虚函数和纯虚函数,以下说法正确的是()

  • 子类必须重载父类里的虚函数
  • 子类必须重载父类里的纯虚函数
  • 虚基类的构造函数在非虚基类之前调用
  • 带有纯虚函数的类不能直接实例化
子类实现父类虚函数叫重写,不叫重载;
父类有纯虚函数,子类可以不实现,此时子类仍是抽象类。


编辑于 2017-09-02 18:35:57 回复(3)
c选项,
最终继承类构造函数中,成员初始化列表同时出现对虚基类和非虚基类构造函数的调用时,虚基类的构造函数先于非虚基类的构造函数执行
发表于 2018-04-18 16:20:45 回复(2)
定义一个函数为虚函数,不代表函数为不被实现的函数。
定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。
定义一个函数为纯虚函数,才代表函数没有被实现。

定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。
发表于 2017-08-19 17:24:09 回复(2)
咋我做C语言的专项练习会出现类啊?题目归类要严谨一点呀,这明显是c++的内容呐
发表于 2022-02-07 23:12:29 回复(0)
子类继承父类时,必须重写父类的纯虚函数,函数名、返回类型、参数个数和类型都不能改
发表于 2017-08-18 16:08:39 回复(1)
为什么做的c语言题,出来那么多c++题
发表于 2022-09-12 21:20:34 回复(0)
虚继承时构造函数的执行顺序与普通继承时不同,在最终派生类的构造函数列表中,不管各个构造函数的顺序如何,编译器总是先调用虚基类的构造函数,再按照出现的顺序调用其他的构造函数。
发表于 2021-05-07 22:02:15 回复(0)
如果虚基类是由非虚基类派生的呢??C选项是错的https://blog.csdn.net/iefswang/article/details/12675691  
发表于 2018-08-14 15:29:30 回复(1)
子类实现父类虚函数叫重写,不叫重载;
发表于 2022-03-15 10:54:01 回复(0)
c选项是什么意思?
发表于 2017-12-20 08:44:56 回复(1)
首先  A B的说法存在错误:那不叫 “重载”(overload),那叫“重写”或者“覆盖”(override)。
重载指的是同一作用域中。
即使是覆盖也是不对的:
        对于A:子类如果不重写父类的虚函数的话,就直接调用父类的虚函数就可以了,没有规定说子类继承之后必须重写,不重写也可以。
        对于B:子类如果不实现父类纯虚函数的话,和A同理,那么这个子类仍是一个抽象类,留给其后代再次继承和实现就好了。
        对于C:虚基类指的是,被虚继承的类。virtual有两种用法,一是修饰继承关系,二是修饰成员函数,虚基类是指被vitrual修饰继承的类。跟题目描述中的(纯)虚函数没有任何关系。
        对于D:正确,抽象类的纯虚函数没有具体实现,因此不能实例化。
编辑于 2023-12-12 21:55:44 回复(0)
对于c选项,虚基类的 构造函数要在非虚基类之前被调用是初始化进行,并可能使用代码(包其他函数)执行完成。这可以初始化确定问题
发表于 2023-09-27 20:03:49 回复(0)
子类实现父类虚函数叫重写,不叫重载;
父类有纯虚函数,子类可以不实现,此时子类仍是抽象类。
发表于 2022-09-04 10:16:52 回复(0)
虚基类的构造函数在非虚基类之前调用;带有纯虚函数的类不能直接实例化
发表于 2022-02-17 15:14:33 回复(0)
D不应该是,带有未实现定义的纯虚函数的类不能实例化吗?
发表于 2021-01-04 14:30:02 回复(0)
重写不等于重载
发表于 2020-09-03 13:27:22 回复(0)
AB选项中在同类中属于重载,在不同类中属于覆盖,说法已经不正确了。
发表于 2018-08-29 20:04:24 回复(0)
A可以不重写
B子类可以不重写父类的纯虚函数,但此时的子类依然是抽象类,不可以实例化对象。

重载和重写,其实能理解题目表达的意思就够了,本题很明显不是考这个的。
发表于 2018-03-23 20:18:06 回复(0)
AB明显错的,子类拥有与父类相同的函数 称之为 重写 override,而不是重载
发表于 2018-03-22 13:02:44 回复(0)