大家觉得C++多重继承、虚拟继承重要吗

zhangtonghui816 2012-12-08 11:23:22
大家觉得C++多重继承、虚拟继承重要吗?我编程几乎没用到多重继承,是不是我太水了?
...全文
337 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
神-气 2014-03-07
  • 打赏
  • 举报
回复
我从来不用多重继承和virtual继承。
systree 2013-03-06
  • 打赏
  • 举报
回复
多重继承+虚拟继承的使用是需要对虚表等编译机制很理解的情况下使用的,在很多时候还是很有用的,我个人觉得大体上 在两种情况下可以使用并减少代码 A: -> 输出流 - 流 - -> 输出输入流 -> 输入流 - 如果不使用多重继承,那么就需要在 [输出输入流] 里面重写很多函数,然后在 输出流/输入流 的实现中保留同一个 流的对象的引用 B: -> 接口.象苹果一样的东西 -> -> 苹果的实现 接口.象水果一样的东西 -> 类.水果的实现 -> -> 梨子的实现 -> 接口.象梨子一样的东西 -> 这个例子中,如果不使用虚拟多重继承,就必须写一组函数的转调用,在梨子的实现内部嵌入一个水果的实现,很重复的工作,在一个中等规模的软件中(500K行软件),如果全部使用转调用,可能会导致代码增加5%以上
hznat 2012-12-09
  • 打赏
  • 举报
回复
如果是工作,就不一定由自己决定了。 在我工作的几年,我甚至没有直接使用过继承,更不用说多重继承和虚拟继承了。不过自己感觉自己C++水平确实不怎么地。 --PS:我们公司自己写的框架会自动生成基础的代码,用到继承等一些C++特性。像我们做业务开发不会去改那些代码,也很少有时间去读那些代码。
HAN-Kai 2012-12-09
  • 打赏
  • 举报
回复
理解什么的倒是不难,但是真正用起来的时候,还是需要很强的底子的。实际设计中尽可能避免吧,目前我也没有在实际项目中用到。也就是自己写写小demo玩玩。
mujiok2003 2012-12-09
  • 打赏
  • 举报
回复
理解是必要的,因为我们需要阅读、维护、使用别人的代码。设计中慎用吧,简单、务实、美,越复杂的机制越容易出错。 一个用到了多继承和虚拟继承的例子:std::fstream
SKATE11 2012-12-09
  • 打赏
  • 举报
回复
那要看你怎样设计了
redleaves 2012-12-09
  • 打赏
  • 举报
回复
多重继承,从逻辑上来说,是可以消除的. 就和goto一样,虽然有其它的方式代替. 但合理的使用会带来意想不到的好处. 虚拟继承则是为了解决简单的多重继承引入的一些问题而设计的. 如非特别的设计需求,所有的多重继承都应该用虚拟继承. 这样从逻辑上会简单很多.不过同时可能带来一些额外开销.
stereoMatching 2012-12-09
  • 打赏
  • 举报
回复
楼主,没多少个c++的大牛很推崇多重继承的 herb sutter,meyers和code complete别说是 多重继承了,就连单一继承的态度都很谨慎 code complete更有这么一句话 "对待继承只有两种态度,不用和谨慎使用" Qt的架构图上也没用到多重继承 不是因为c++有多重继承,我就非用不可 我选择c++是因为我认为他很适合解决我的问题 我选择c++不是不是为了使用它的特性 更不是为了炫耀自己懂多少高级技巧 多重继承,我这菜鸟不常用, 会用到的时机只有两种,一种是effective c++ 3rd第40条的情况 第二种是使用policy based design的时候(这东西有时候还真不错用) virtual继承则是从来都没用过 我个人不太喜欢在一开始的时候就使用继承 以我目前的功力来说,除非我对自己要做什么非常清楚 否则继承所带来的复杂度跟他所带来的好处相比 实在是微不足道,通常不是弹性不足,就是过度设计
taodm 2012-12-09
  • 打赏
  • 举报
回复
java那一堆interface就是多继承。
zhangtonghui816 2012-12-09
  • 打赏
  • 举报
回复
求回复~~~~~~~~~~~~~~~~~~,先谢谢各位了
zhangtonghui816 2012-12-08
  • 打赏
  • 举报
回复
引用 3 楼 j8daxue 的回复:
多继承以前也用的少,现在的公司代码体系几乎没什么是单继承的了。 如果需要把一个类指针转型到上面几个父类,还是必须的。
据说java没有多继承,这怎么解释呢,谢啦
j8daxue 2012-12-08
  • 打赏
  • 举报
回复
多继承以前也用的少,现在的公司代码体系几乎没什么是单继承的了。 如果需要把一个类指针转型到上面几个父类,还是必须的。
zhangtonghui816 2012-12-08
  • 打赏
  • 举报
回复
引用 1 楼 lilianjie001 的回复:
只能说具体情况具体分析。
能具体点吗,谢啦~
lilianjie001 2012-12-08
  • 打赏
  • 举报
回复
只能说具体情况具体分析。

64,637

社区成员

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

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