我有一個類Derived
直接繼承兩個基類,Base1
和Base2
。我想知道,如果它是安全的,在一般情況下,比較指針的基類,以確定它們是否相同Derived
對象:多繼承指針比較
Base1* p1;
Base2* p2;
/*
* Stuff happens here. p1 and p2 now point to valid objects of either their
* base type or Derived
*/
//assert(p1 == p2); //This is illegal
assert(p1 == static_cast<Base1*>(p2)); //Is this ok?
assert(static_cast<Derived*>(p1) == static_cast<Derived*>(p2)); //How about this?
指針保證是有效的,但不一定指向到一個Derived
對象。我的猜測是,這可能是好的,但我想知道從技術C++的角度來看它是否可以。我其實從來沒有對指針做任何操作,我只是想知道他們是否指向同一個對象。
編輯:這似乎是安全的,如果我可以保證p1
和p2
指向Derrived
對象。我基本上想知道,如果它們不安全 - 如果一個或兩個都指向一個基礎對象,比較必然會失敗嗎?再次,我可以保證指針是有效的(即,p1
永遠不會指向一個Base2
對象,反之亦然)
我的印象是,C++不支持多重繼承。你的意思是「Base1-> Base2-> Derived」 –
C++確實支持多重繼承:) – cwap
這是在腳下拍攝自己的最簡單方法之一,但是,是的,C++支持MI – Lucretiel