在多重繼承中, 如果多個基類包含相同名字的成員函數, 則在派生類使用時, 容易發生歧義, 會導致出錯;
解決方法是: 在派生類中重寫基類方法, 覆蓋原方法, 再指定基類范圍(scope), 確定使用那個基類的方法, 可以避免歧義;
代碼如下:
/* * cppprimer.cpp * * Created on: 2014.1.10 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include#include struct Base1 { void print (void) { std::cout << Base 1 << std::endl;} }; struct Base2 { void print (void) { std::cout << Base 2 << std::endl;} }; struct Derived1 : public Base1, public Base2 { void print (void) { //重寫基類方法 Base1::print(); //指定使用何種 Base2::print(); } }; int main (void) { Derived1 d1; d1.print(); //名字相同時, 會發生命名沖突! }
Base 1 Base 2