程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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 
#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


 

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