在多重繼承中, 如果多個基類包含相同名字的成員函數, 則在派生類使用時, 容易發生歧義, 會導致出錯;
解決方法是: 在派生類中重寫基類方法, 覆蓋原方法, 再指定基類范圍(scope), 確定使用那個基類的方法, 可以避免歧義;
代碼如下:
/*
* cppprimer.cpp
*
* Created on: 2014.1.10
* Author: Spike
*/
/*eclipse cdt, gcc 4.8.1*/
#include <iostream>
#include <string>
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
作者:csdn博客 Spike_King