虚函数和纯虚函数

juqi777 2006-11-01 05:50:41
为什么要在基类中定义纯虚函数,可以用空的虚函数来定义吗,两者有何不同?
虚函数和纯虚函数都可以给派生类进行重载的啊!
...全文
452 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiao_potato 2006-11-02
  • 打赏
  • 举报
回复
可以用空的虚函数来定义吗?
========================
如果是普通的函数,是可以不定义的,当然如果调用了这个函数,编译器是会提示链接错误的。
如果是虚函数,给出了声明,不给出定义。编译器是会提示链接错误的。至少我的VC6是这样。

就算可以链接通过,也是有区别的。那就是可以定义基类的实例,当然前提是你不能通过这个实例去调用这个未定义的函数。
而纯虚函数,是不可以对这个抽象基类实例化的。
dfkoko 2006-11-01
  • 打赏
  • 举报
回复
ls正解
OOPhaisky 2006-11-01
  • 打赏
  • 举报
回复
纯虚函数 不等于 空的虚函数!!
纯虚函数代表抽象类,不能实例化,而空的虚函数就是一般的虚函数,只不过函数体为空而已。
fflush 2006-11-01
  • 打赏
  • 举报
回复
当你设计一个framework的时候,使用pure virtual function可以使设计更规范,防止一些不正确的使用,在一般的应用下,你用一个空的虚函数和纯虚函数并没有多大区别。这个问题需要上升到设计层面才有讨论的意义
mimong_lin 2006-11-01
  • 打赏
  • 举报
回复
非要用一个空的虚函数的话,那LZ的话题就变质了。

纯虚函数就是让类不能实例化。LZ硬要的话,就是不遵守这个规则了,我们也没办法。
terry_xss 2006-11-01
  • 打赏
  • 举报
回复
那如果我非要用一个空的虚函数来定义有什么不同吗?

不同就是这样可以实例化,用纯虚函数不能实例化
wjwjwj 2006-11-01
  • 打赏
  • 举报
回复
你可以用一个空的虚函数来定义,这意味着你的类不是纯虚类,因而可以被实例化。另外,如果你使用纯虚函数,则在你的派生类中一定要实现这个函数,否则,你的派生类也无法被实例化。
lw1a2 2006-11-01
  • 打赏
  • 举报
回复
有纯虚的类不能:
A a;//A为类
juqi777 2006-11-01
  • 打赏
  • 举报
回复
那如果我非要用一个空的虚函数来定义有什么不同吗?
lann64 2006-11-01
  • 打赏
  • 举报
回复
纯虚函数的一个重要用途是让这个类不能实例化。

64,676

社区成员

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

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