在多重继承中, 如果多个基类包含相同名字的成员函数, 则在派生类使用时, 容易发生歧义, 会导致出错;
解决方法是: 在派生类中重写基类方法, 覆盖原方法, 再指定基类范围(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
更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/cplus/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, include
, 方法
, void
, 多重
, Inheritance
multiple
multiple inheritance、ambiguity、causal ambiguity、ambiguity aversion、ambiguity.dic,以便于您获取更多的相关知识。
时间: 2024-10-31 01:38:14