CPP学习之——多重继承容易产生两义性(12.14)

一 概述

子类有两个以上父类,且父类中含有相同的方法名,子类调用父类方法时,应该使用哪个父类中的方法呢?这是本节课要介绍的内容

二 示例演示及结果输出

2.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
using namespace std;
class A
{
public:
void hello(){cout<<"基类A的hello函数"<<endl;}
};
class B
{
public:
void hello(){cout<<"基类B的hello函数"<<endl;}
void print(){cout<<"基类B的print函数"<<endl;}
};
class C:public A,public B
{
public:
void print(){cout<<"子类C的print函数"<<endl;}
};
int main()
{
C c;
c.A::hello();
c.B::hello();
c.B::print();
c.print();
A a;
B b;
a.hello();
b.print();

return 0;
}

2.2 输出结果

1
2
3
4
5
6
基类A的hello函数
基类B的hello函数
基类B的print函数
子类C的print函数
基类A的hello函数
基类B的print函数

2.3 代码说明

  • 子类直接调用父类中含有相同方法名时出现错误
  • 子类应该直接指明所调用的父类中的方法