|
|

楼主 |
发表于 2006-3-12 11:06:00
|
显示全部楼层
Re:C++里的多继承~不明白~
~对于继承,我同意william9527的堆砌说法,但是我这里的问题是,其实我觉得那一句CA::m_a是具有二义性的-----按照堆砌的说法----
我在VC6下在return 0;处设置断点,调试执行到这个地方,看调试拦里的信息如下:
cd
CB
CA
m_a
CC
CA
m_a
由此看出,CA::m_a肯定是具有二义性的。但是为什么能在VS2005EE下通过编译呢?这个其实跟编译器自己的规定有关,于是我把代码放到VS2005EE下执行,看了输出结果。
CA::m_a输出就为10,难道跟CD继承CC,CB的先后有关系?------正如william9527
所说,CB比CC先被继承。于是我改动代码:
class CD:private CC,private CB
{
.....
};
看看结果,结果就输出了CA::m_a=20,哈哈,由此看来,在VS2005EE中,这种情况由于本身具有二义性,编译器为了方便大家-----我觉得反而是害了大家---它就会默认是先继承的那个,也即:
假如CB先被继承,CA::m_a就等同于:CB::CA::m_a,反之就为CC!
我想现在大家应该明了了吧!
谢谢回帖! |
|