校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > C++语言 > new、malloc、delete
题目

下面关于虚函数和函数重载的叙述不正确的是

A.虚函数不是类的成员函数

B.虚函数实现了C++的多态性

C.函数重载允许非成员函数,而虚函数则不行

D.函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定

解答

正确答案是 A

虚函数也是类的成员函数,A说法是不正确的;
虚函数和函数重载都实现了C+=的多态性,但表现形式不一样,函数重载调用根据参数个数、参数类型等进行区分,而虚函数则是根据动态联编来确定调用什么,故BD说法正确
函数重载可以是类的成员函数也可以是非成员函数,比如:
int fun(int a);
int fun(int a, int b);
这就是非成员重载,虚函数必须是成员函数了,否则就失效了, 所以C对
C 5条回复 评论
雾绕空山

想应聘产品经理岗位,不过还没有拿的出手的经历和作品,只做过一些产品运营的工作,都比较浅,只是入了个门,觉得心很虚。

发表于 2021-12-16 21:00:00
0 0
夏至末日

真的好拼呀

发表于 2021-09-11 13:20:00
0 0
落星辰

函数重载和虚函数在概念和使用方式方面的区别

1.函数重载可以用于非成员函数和类的成员函数,而虚函数只能用于类的成员函数

2.函数重载可用于构造函数,而虚函数不能用于构造函数

3.如果对成员函数进行重载,重载的函数与被重载的函数应该是用一个类中的成员函数,不能分属于两个不同继承层次的类,函数重载处理的是横向的重载。虚函数是对同一类族中的基类和派生类的同名函数的处理,即允许在派生类中对基类的成员函数重新定义。虚函数处理的是纵向的同名函数。

4.重载的函数必须具有相同的函数名,函数类型可以相同也可以不同,但函数的参数个数和参数类型二者中至少有一个不同,否则在编译时无法区分。而虚函数则要求同一类族中的所有虚函数的函数名,函数类型,函数的参数个数和参数类型都全部相同,否则就不是重定义了,也就不是虚函数了

5.函数重载是在程序编译阶段确定操作的对象的,属于静态关联。虚函数是在程序运行阶段确定操作对象的,属于动态关联。

发表于 2018-10-23 11:19:10
0 0
人生赢家


扩展一下,提醒大家注意虚函数和纯虚函数的区别

虚函数可以在子类中进行重载,也可以不重载而沿用父类中的方法。但纯虚函数必须重载,因为在其声明类中没有函数实现。vritual void func()=0;

包含纯虚函数的类为抽象类,抽象类不能声明对象,只能作为基类

发表于 2018-10-23 11:18:32
0 0
小飞鞋


多态性分为编译时多态性和运行时多态性,
编译时多态性通过静态编联完成,例如函数重载,运算符重载;
运行时多态性则是动态编联完成,主要通过虚函数来实现;

函数重载不需要是成员函数,在类外声明或定义的函数同样可以对其进行重载

重载的调用主要根据参数个数,参数类型,参数顺序来确定, 函数重载是忽略返回值的

发表于 2018-10-23 11:18:16
0 0