600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)

C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)

时间:2024-06-22 19:35:31

相关推荐

C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)

多重继承(multiple inheritance) 的 名称歧义(name ambiguity)

本文地址:/caroline_wendy/article/details/18077235

在多重继承中, 如果多个基类包含相同名字的成员函数, 则在派生类使用时, 容易发生歧义,会导致出错;

解决方法是: 在派生类中重写基类方法, 覆盖原方法, 再指定基类范围(scope), 确定使用那个基类的方法, 可以避免歧义;

代码如下:

/** cppprimer.cpp** Created on: .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 1Base 2

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。