多重繼承, 如果基類(base class)的成員函數名稱相同,重載(overload)函數調用, 會忽略public和private, 選取最佳的匹配函數,
匹配度相同, 則會造成歧義, 產出錯誤:request for member 'xxx' is ambiguous, (GCC)
如需使用, 可以添加具體的域操作符, 指定類("class::method()").
代碼如下:
/* * test.cpp * * Created on: 2014.04.14 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <iostream> #include <string> using namespace std; class BorrowableItem { public: //共有 void checkout() { std::cout << "BorrowableItem" << std::endl; } }; class ElectronicGadget { private: //私有 bool checkout() const { return true; }; }; class MP3Player: public BorrowableItem, public ElectronicGadget {}; int main() { MP3Player mp; mp.BorrowableItem::checkout(); //不添加域操作符會產生歧義 return 0; }
輸出:
BorrowableItem
作者:csdn博客 Spike_King