首页 > 试题广场 >

关于虚函数,下面哪些描述是正确的()

[不定项选择题]
关于虚函数,下面哪些描述是正确的()
  • 虚函数是实现方法重载的工具
  • java中所有的函数都是虚函数
  • 通过虚函数,类体系获得了多态性支持
  • 虚函数必须在子类中实现
  • 虚函数不能被子类继承
  • 在c++中,基类的析构函数建议为虚析构函数
CF
虚函数:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。
用法格式为:
virtual 函数返回类型 函数名(参数表) {函数体};
作用是实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数。
  • 方法重载是同一个类中相同的方法名,而虚函数是基类的定义和派生类重写来实现。A错误
  •  Java函数(方法)有静态方法、成员方法、final修饰的不可变方法……,不仅仅是基类/派生类的重写方法。B错误。
  • 虚函数的作用就是实现多态性。C正确
  • 虚函数在基类中定义,子类中可以被重写,也可以忽略。纯虚函数必须在子类中实现。D错误
  • 虚函数就是定义在基类的普通函数,既可被直接继承,也可被重写。E错误
  • 析构函数为类对象生命期结束的时候,由系统自动调用释放在构造函数中分配的资源。基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类的析构函数要定义为虚函数。F正确
发表于 2019-11-08 18:38:41 回复(2)
选择CF
A:虚函数并不能用于实现重载,只能被重写
B:在JAVA中普通函数C++的虚函数是一样的,但是如果有final关键字限制,则变成非虚函数。
C:正确
D:在C++中子类可以不实现基类的虚函数,此时子类仍然是一个抽象类,不能实列化对象。
E:子类会继承成员函数,虚函数也是成员函数
F:建议这么做,否则会存在内存泄漏的风险

编辑于 2019-11-11 14:35:35 回复(1)
C, F是正确描述。

A错,虚函数是为了实现方法重载提供的,主要目的是实现多态性。

B错,Java中没有虚函数的概念,但实现了多态性。

C正确,虚函数使得派生类可以覆盖基类函数,从而实现多态行为。

D错,虚函数可以在基类中定义为纯虚函数形式,但不要求子类一定实现。

E错,虚函数可以被子类继承并覆盖。

F正确,基类的析构函数建议定义为虚函数,这样对象释放时可以调用正确的子类析构函数清理资源。
发表于 2023-10-31 20:20:54 回复(0)