C++里的虚函数可不可以重载?

fisher3014 2009-05-13 01:37:10
C++里的虚函数可不可以重载?
...全文
1264 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahui5252 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fengxuxing 的回复:]
虚函数就是用来重载然后实现oop多态的特性的.那就是肯定能行啦.
不过,是不是lz所说的重载不会是在派生类之中重新实现一个函数名相同但是参数标志不同的函数吧,这种就不是重载而是覆盖了.
[/Quote]
同意……
pengzhixi 2009-05-14
  • 打赏
  • 举报
回复
可以 但是注意重载必须在同一个作用域.而覆盖是在派生类里面定义一个相同名字的函数,并且这个函数的参数个数和类型是和基类里的虚函数相同的
而隐藏是对外层作用域(基类)的函数进行隐藏,在内层作用域中定义另一个相同的函数名字,但是参数个数和类型不必相同,相同就变成覆盖了.
maosher 2009-05-14
  • 打赏
  • 举报
回复
可以,结果此重载函数都自动为虚函数
SenerityChzr 2009-05-14
  • 打赏
  • 举报
回复
重载跟虚函数是不相关的两个概念……
  • 举报
回复
@SenerityChzr 请问如果在派生类中重载了一个基类中的虚函数,那么派生类中重载的这个函数是虚函数吗,用派生类对象还能调用基类中的那个虚函数吗
amossavez 2009-05-14
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 rlj021 的回复:]
重载跟虚函数是不相关的两个概念……
[/Quote]
同意!可以重载!
重载函数是编译器在程序编译期间就根据函数参数列表的不同,产生了不同的函数代码,它是在编译期间就实现的多态性。

虚拟函数是在程序的执行期间,根据虚拟表中的数据来判断是应该调用哪一个类中定义的函数,它是在执行期间实现的多态性。
  • 举报
回复
@amossavez 请问如果在派生类中重载了一个基类中虚函数,那么派生类中重载的这个函数是虚函数吗,用派生类对象还能调用基类中的那个虚函数吗
wanjingwei 2009-05-14
  • 打赏
  • 举报
回复
mark
zz_zhanyun 2009-05-13
  • 打赏
  • 举报
回复
可以
nuoshueihe 2009-05-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class A
{
public:
virtual void f()
{
cout<<"A::f()"<<endl;

}
virtual void f(int a=0) //重载
{
cout<<"A::f(int)"<<endl;

}
protected:
private:
};
class B:public A
{
public:
virtual void f() //覆盖了A的
{
cout<<"B::f()"<<endl;

}
protected:
private:
};
void main()
{
B b1;
b1.f();
liliangbao 2009-05-13
  • 打赏
  • 举报
回复
可以~
yet_flash 2009-05-13
  • 打赏
  • 举报
回复
建议楼主多看看oop吧! 对 接口理解一下!
crst_zh 2009-05-13
  • 打赏
  • 举报
回复
楼主需要仔细看一下重载,覆盖,隐藏这三者的概念区别
Qlaiaqu 2009-05-13
  • 打赏
  • 举报
回复
虚函数就是用来重载然后实现oop多态的特性的.那就是肯定能行啦.
不过,是不是lz所说的重载不会是在派生类之中重新实现一个函数名相同但是参数标志不同的函数吧,这种就不是重载而是覆盖了.
crst_zh 2009-05-13
  • 打赏
  • 举报
回复
可以的,重载是在类内部,以参数的不同来区分的

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧