重写是个什么概念?

davidshen 2003-03-17 03:22:13
重写(overwrite)什么意思?
和重载(overload)有什么区别?
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidshen 2003-03-21
  • 打赏
  • 举报
回复
因该是这样了。
谢谢!!!!结贴
guoxiny 2003-03-17
  • 打赏
  • 举报
回复
是这个吧:
class CBase
{
void f(){}
}

class CDervie:public CBase
{
void f(){}重写
void g(int);重载
void g(float);
}
FiLng 2003-03-17
  • 打赏
  • 举报
回复
重载(overload)是相同的函数名,但函数名,参数列表以及返回值组成的函数标签不同,这样编译器可以根据调用的实参类型等不同而选择相应的函数。
重写(overwrite)指对基类虚函数,虚函数的实现一般是通过虚函数表(表中存放虚函数的地址)每个类对象有指针(vptr)指向该表。派生类对象的vptr会指向自己的虚函数表(表中存放基类的虚函数地址),这样就继承了基类的虚函数。当派生类重写基类的虚函数X,就把虚函数表中原先存放的基类虚函数x地址改为派生类新定义的函数X,这样当你通过真正指向派生类对象的指针或引用(与指针或引用申明的类型无关)访问X,就会调用派生类的X。
delphihero 2003-03-17
  • 打赏
  • 举报
回复
重写!有吗?

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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