程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++中多重繼承(multiple inheritance) 的名稱歧義(name ambiguity)

C++中多重繼承(multiple inheritance) 的名稱歧義(name ambiguity)

編輯:關於C++

在多重繼承中, 如果多個基類包含相同名字的成員函數, 則在派生類使用時, 容易發生歧義, 會導致出錯;

解決方法是: 在派生類中重寫基類方法, 覆蓋原方法, 再指定基類范圍(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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved