C++中多重担任(multiple inheritance) 的名称歧义(name ambiguity)
当前位置:以往代写 > C/C++ 教程 >C++中多重担任(multiple inheritance) 的名称歧义(name ambiguity)
2019-06-13

C++中多重担任(multiple inheritance) 的名称歧义(name ambiguity)

C++中多重担任(multiple inheritance) 的名称歧义(name ambiguity)

在多重担任中, 假如多个基类包括沟通名字的成员函数, 则在派生类利用时, 容易产生歧义, 会导致堕落;

办理要领是: 在派生类中重写基类要领, 包围原要领, 再指定基类范畴(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

    关键字:

在线提交作业