首页 > 试题广场 >

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

[单选题]
下面关于虚函数和函数重载的叙述不正确的是
  • 虚函数不是类的成员函数
  • 虚函数实现了C++的多态性
  • 函数重载允许非成员函数,而虚函数只针对于成员函数
  • 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定
推荐
选A。

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

编辑于 2014-12-30 21:09:34 回复(3)
多态性分为编译时多态性和运行时多态性,
编译时多态性通过静态编联完成,例如函数重载,运算符重载;
运行时多态性则是动态编联完成,主要通过虚函数来实现;

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

重载的调用主要根据参数个数,参数类型,参数顺序来确定, 函数重载是忽略返回值的
发表于 2015-09-16 13:48:13 回复(0)
扩展一下,提醒大家注意虚函数和纯虚函数的区别

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

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


发表于 2015-05-12 21:08:51 回复(7)

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

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

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

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

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

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

发表于 2017-10-09 13:48:52 回复(0)
A  虚函数是类的成员函数.
发表于 2015-05-03 14:19:57 回复(0)
虚函数那叫重写,跟重载不一样。
发表于 2018-04-25 10:20:35 回复(0)
虚函数也可以进行重载的,C后半句为什么也对?

发表于 2017-06-04 10:53:21 回复(2)
虚函数的基本要求就是类的成员函数,感觉没什么水平这题
发表于 2015-12-18 17:18:03 回复(0)
1.虚函数也是类的成员函数 2.非成员函数就是一般的函数。
发表于 2020-12-24 16:22:05 回复(0)
d选项 不是少了个参数类型吗:D
发表于 2023-09-14 22:52:32 回复(0)
虚函数是类的成员函数
发表于 2023-06-07 18:20:01 回复(0)
C++类的成员函数:
成员函数是在类中定义的函数;
而非成员函数就是普通函数,即不在类中定义的函数,其中非成员函数比较典型的是友元函数
发表于 2022-09-26 11:07:29 回复(0)
多态性分为编译时多态性和运行时多态性,
编译时多态性通过静态编联完成,例如函数重载,运算符重载;
运行时多态性则是动态编联完成,主要通过虚函数来实现;

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

重载的调用主要根据参数个数,参数类型,参数顺序来确定, 函数重载是忽略返回值的
发表于 2022-05-15 16:13:50 回复(0)
C++ 里面支持重载虚函数/纯虚函数,此时虚函数只能是类的成员函数;另外virtual关键字只能用在类内部;
发表于 2021-09-03 19:27:34 回复(0)
C是个语文题。。。宾语是“允许非成员函数”,函数重载允许非成员函数,而虚函数不行,这句话反正过来就是: 函数重载允许非成员函数,而虚函数不允许非成员函数。。。。。
发表于 2021-07-25 16:08:04 回复(0)
虽然选C,答案是做错了,不过严谨来说,感觉C也不对,毕竟虚函数是类成员函数,肯定可以重载的。当然,相比较A而言,C错一半,从以前英语老师教育经验来看,选的是最佳答案,或者答案A也算合理了,毕竟A整句话都错了~
发表于 2021-04-11 17:34:45 回复(0)
C:  函数重载允许非成员函数,而虚函数则不行

从中文语义上怎么理解?

发表于 2020-11-07 15:09:41 回复(0)
虚函数也是类的成员函数
发表于 2020-09-10 19:36:35 回复(0)
答案A。
虚函数必定是类的成员函数。
C可能有歧义。
可能会理解为“函数重载允许非成员函数,而不允许虚函数重载”。
虚函数可以重载。(理解错了真尴尬,为什么我第一眼就看到C呢。。)

发表于 2020-06-29 22:07:34 回复(0)
老想着虚表指针和内存模型了,没选对,结果蒙了个D,起码函数名得一样吧
发表于 2020-05-09 18:00:59 回复(0)
选A。 解释: 虚函数也是类的成员函数,A说法是不正确的; 虚函数和函数重载都实现了C++的多态性,但表现形式不一样,函数重载调用根据参数个数、参数类型等进行区分,而虚函数则是根据动态联编来确定调用什么,故BD说法正确 函数重载可以是类的成员函数也可以是非成员函数,比如: int fun(int a); int fun(int a, int b); 这就是非成员重载,虚函数必须是成员函数了,否则就失效了, 所以C对
发表于 2018-12-02 14:04:33 回复(0)