C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)
2014-01-10 10:54
471 查看
多重继承(multiple inheritance) 的 名称歧义(name ambiguity)
本文地址: http://blog.csdn.net/caroline_wendy/article/details/18077235在多重继承中, 如果多个基类包含相同名字的成员函数, 则在派生类使用时, 容易发生歧义, 会导致出错;
解决方法是: 在派生类中重写基类方法, 覆盖原方法, 再指定基类范围(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
本文出自 “永不言弃” 博客,请务必保留此出处http://spikeking.blog.51cto.com/5252771/1387944
相关文章推荐
- C++ - 多重继承(multiple inheritance) 的 名称歧义(name ambiguity)
- C++ - 多重继承(multiple inheritance)歧义(ambiguous)
- C++(13):多继承(multiple inheritance)
- C++ 多继承和虚继承的内存布局(Memory Layout for Multiple and Virtual Inheritance)
- C++ 多继承和虚继承的内存布局(Memory Layout for Multiple and Virtual Inheritance )
- More Effective C++ 条款24 了解virtual function,multiple inheritance,virtual base classes,runtime type id
- c++ 多重继承歧义及其解决办法
- Effective C++ Item 33 避免遮掩继承过来的名称
- C++ - 在容器(container)中 使用继承(inheritance)和虚函数(virtual function)
- Multiple Inheritance in C++
- C++之避免遮掩继承而来的名称(33)---《Effective C++》
- 20180321 C++ 避免遮掩继承而来的名称
- JAVA多继承(multiple inheritance)的实现
- Effective_C++_条款三十三:避免遮掩继承而来的名称
- C++多继承MI名称冲突解决方法(作用域解析运算符)
- More Effective C++ 条款24 了解virtual function,multiple inheritance,virtual base classes,runtime type identification的成本
- 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称
- 多继承 multiple inheritance
- C++ - 继承(inheritance) 和 动态绑定(dynamic binding) 简介
- [effectiv c++]条款33:避免遮掩继承而来的名称(重载,重写,重定义)