关于virtual不明白之处->请高手帮忙

xurongshi 2006-07-29 01:22:32
下面我简单起见 列出重点:
class x{ public:
virtual x* temp(){......}
.... };
class y:public x{
public:virtual y* temp(){......}
... };
/*事实上子类虚拟函数也可以这样声明 x* (){......} 但不知为何如此也可 ??
在此先说声谢谢!
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
song4 2006-08-02
  • 打赏
  • 举报
回复
就他说对了OOPhaisky(渴望成功)
fangrk 2006-08-01
  • 打赏
  • 举报
回复
OOPhaisky(渴望成功) 说的对
fflush 2006-07-29
  • 打赏
  • 举报
回复
楼上的说得很对,其他人说得都不太正确。。。
OOPhaisky 2006-07-29
  • 打赏
  • 举报
回复
子类想要override基类的virtual函数,参数列表要完全相同,但是返回类型可以不同,但是也有一定限制:子类virtual函数的返回类型可以是基类virtual函数返回类型的子类。
xurongshi 2006-07-29
  • 打赏
  • 举报
回复
谢谢上面各位,下面是从我导师话归纳如下:

这是一个语法规定
父类是虚函数
子类保持为虚函数
派生类中如果重定义虚函数叫超载 -吴乃陵的书

大概是明白个怎么回事.关键是会用就OK
chenhu_doc 2006-07-29
  • 打赏
  • 举报
回复
就好比重载一样

int fun( int n );
void fun( int n);


#include <iostream>
using namespace std;

int fun( int m )
{
cout << "int" <<endl;
return m;
}
/*
void fun( int m )
{
cout << "void" <<endl;
return ;
}
*/
int main()
{
int m = 0;
fun(m);
system("PAUSE");
return 0;

}
//做个比方,不过我想c++ 中有很多机制都是相通的。。
//可能就涉及到一个匹配,查找的过程,和编译器的实现相关,在查找的过程中,顾及不到返回类型
chenhu_doc 2006-07-29
  • 打赏
  • 举报
回复
虚函数只要求实参,函数名和virtual相同,至于返回类型根本不做检查!
jixingzhong 2006-07-29
  • 打赏
  • 举报
回复
返回类型的变化也是在这个范围之内 ...
jixingzhong 2006-07-29
  • 打赏
  • 举报
回复
虚函数的实现本来就是可以变化的,
这个没有什么问题么 ...

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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