在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?
来源:互联网 发布:小区网络监控设计方案 编辑:程序博客网 时间:2024/06/04 18:53
首先,foo在A,B总应该都是虚函数,否则就直接覆盖了,就没有这个问题了;其次,这个问题从语法角度来看似乎是无法解决。因为我们不能改原有设计(不然也没这个问题了:)),所有只好从extend来考虑:
class A{public:virtual void foo(){ cout << "A" << endl; }};class B{public:virtual void foo(){ cout << "B" << endl; }};class EA:public A{public:virtual void foo(){ fooA(); }private:virtual void fooA() = 0;};class EB : public B{public:virtual void foo(){ fooB(); }private:virtual void fooB() = 0;};class AB : public EA, public EB{private:virtual void fooA(){ cout << "AB A" << endl; }virtual void fooB(){ cout << "AB B" << endl; }};int _tmain(int argc, _TCHAR* argv[]){AB* pab = new AB();EA* pea = pab;EB* peb = pab;pea->foo();peb->foo();return 0;}
输出:
AB A
AB B
0 0
- 在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?
- class A 和 class B: public A中A a; B b; A *p = &a; p->foo();相关题目
- class类的继承和子类(二) python
- python中单继承和多继承中子类默认继承父类的哪个构造函数__init__
- 显示一个对象的继承等级,Class类的应用
- 继承一个类的时候报错:The hierarchy of the type 'Class name' is inconsistent
- 在一个类的头文件(如B.h)中声明了A类,问在此文件中能否用"class A;"来代替#include "A.h"?
- class 同时继承两个类
- Class的继承
- 【ES6】class的继承
- struct和class的继承方式
- 子类A继承抽象类B,就一定要重写B的抽象方法
- 在写新class的时候,快捷添加父类的Override函数的方法
- for(foo('A');foo('B')&&(i<2);foo('C')) ,其实考的就是for (初始化语句; 判断条件; 循环条件)
- B继承A的写法
- 原型继承和Class继承
- es6 javascript的Class 类的继承
- [python相关]多类继承中子类默认继承哪个父类的构造函数__init__
- Oracle CASE WHEN 用法介绍
- UC函数之 open
- 信息系统项目管理师考试经验谈
- 1. debian telnet安装
- Java线程生命周期与基本操作(二)
- 在多继承的时候,如果一个类继承同时继承自class A和class B,而class A和B中都有一个函数叫foo(),如何明确的在子类中指出override哪个父类的foo()?
- [LeetCode] Validate Binary Search Tree
- 变参数print函数的实现va_list
- Android的ContentProvider(一)
- nginx按天分割日志
- android:屏幕自适应
- iOS UIPageControl简单实例
- ORACLE配置tnsnames.ora文件实例
- Unity爆炸检测