大伙觉得C++多重继承、虚拟继承重要吗
大家觉得C++多重继承、虚拟继承重要吗
大家觉得C++多重继承、虚拟继承重要吗?我编程几乎没用到多重继承,是不是我太水了?
------解决方案--------------------
多继承以前也用的少,现在的公司代码体系几乎没什么是单继承的了。
如果需要把一个类指针转型到上面几个父类,还是必须的。
------解决方案--------------------
如果是工作,就不一定由自己决定了。
在我工作的几年,我甚至没有直接使用过继承,更不用说多重继承和虚拟继承了。不过自己感觉自己C++水平确实不怎么地。
--PS:我们公司自己写的框架会自动生成基础的代码,用到继承等一些C++特性。像我们做业务开发不会去改那些代码,也很少有时间去读那些代码。
------解决方案--------------------
java那一堆interface就是多继承。
------解决方案--------------------
楼主,没多少个c++的大牛很推崇多重继承的
herb sutter,meyers和code complete别说是
多重继承了,就连单一继承的态度都很谨慎
code complete更有这么一句话
"对待继承只有两种态度,不用和谨慎使用"
Qt的架构图上也没用到多重继承
不是因为c++有多重继承,我就非用不可
我选择c++是因为我认为他很适合解决我的问题
我选择c++不是不是为了使用它的特性
更不是为了炫耀自己懂多少高级技巧
多重继承,我这菜鸟不常用,
会用到的时机只有两种,一种是effective c++ 3rd第40条的情况
第二种是使用policy based design的时候(这东西有时候还真不错用)
virtual继承则是从来都没用过
我个人不太喜欢在一开始的时候就使用继承
以我目前的功力来说,除非我对自己要做什么非常清楚
否则继承所带来的复杂度跟他所带来的好处相比
实在是微不足道,通常不是弹性不足,就是过度设计
------解决方案--------------------
多重继承,从逻辑上来说,是可以消除的.
就和goto一样,虽然有其它的方式代替.
但合理的使用会带来意想不到的好处.
虚拟继承则是为了解决简单的多重继承引入的一些问题而设计的.
如非特别的设计需求,所有的多重继承都应该用虚拟继承.
这样从逻辑上会简单很多.不过同时可能带来一些额外开销.
------解决方案--------------------
理解是必要的,因为我们需要阅读、维护、使用别人的代码。设计中慎用吧,简单、务实、美,越复杂的机制越容易出错。
一个用到了多继承和虚拟继承的例子:std::fstream
------解决方案--------------------
理解什么的倒是不难,但是真正用起来的时候,还是需要很强的底子的。实际设计中尽可能避免吧,目前我也没有在实际项目中用到。也就是自己写写小demo玩玩。
大家觉得C++多重继承、虚拟继承重要吗?我编程几乎没用到多重继承,是不是我太水了?
------解决方案--------------------
多继承以前也用的少,现在的公司代码体系几乎没什么是单继承的了。
如果需要把一个类指针转型到上面几个父类,还是必须的。
------解决方案--------------------
如果是工作,就不一定由自己决定了。
在我工作的几年,我甚至没有直接使用过继承,更不用说多重继承和虚拟继承了。不过自己感觉自己C++水平确实不怎么地。
--PS:我们公司自己写的框架会自动生成基础的代码,用到继承等一些C++特性。像我们做业务开发不会去改那些代码,也很少有时间去读那些代码。
------解决方案--------------------
java那一堆interface就是多继承。
------解决方案--------------------
楼主,没多少个c++的大牛很推崇多重继承的
herb sutter,meyers和code complete别说是
多重继承了,就连单一继承的态度都很谨慎
code complete更有这么一句话
"对待继承只有两种态度,不用和谨慎使用"
Qt的架构图上也没用到多重继承
不是因为c++有多重继承,我就非用不可
我选择c++是因为我认为他很适合解决我的问题
我选择c++不是不是为了使用它的特性
更不是为了炫耀自己懂多少高级技巧
多重继承,我这菜鸟不常用,
会用到的时机只有两种,一种是effective c++ 3rd第40条的情况
第二种是使用policy based design的时候(这东西有时候还真不错用)
virtual继承则是从来都没用过
我个人不太喜欢在一开始的时候就使用继承
以我目前的功力来说,除非我对自己要做什么非常清楚
否则继承所带来的复杂度跟他所带来的好处相比
实在是微不足道,通常不是弹性不足,就是过度设计
------解决方案--------------------
多重继承,从逻辑上来说,是可以消除的.
就和goto一样,虽然有其它的方式代替.
但合理的使用会带来意想不到的好处.
虚拟继承则是为了解决简单的多重继承引入的一些问题而设计的.
如非特别的设计需求,所有的多重继承都应该用虚拟继承.
这样从逻辑上会简单很多.不过同时可能带来一些额外开销.
------解决方案--------------------
理解是必要的,因为我们需要阅读、维护、使用别人的代码。设计中慎用吧,简单、务实、美,越复杂的机制越容易出错。
一个用到了多继承和虚拟继承的例子:std::fstream
------解决方案--------------------
理解什么的倒是不难,但是真正用起来的时候,还是需要很强的底子的。实际设计中尽可能避免吧,目前我也没有在实际项目中用到。也就是自己写写小demo玩玩。