C++ 多重继承

2025年8月29日 | 阅读 7 分钟

本节将讨论 C++ 编程语言中的多重继承。当我们将一个类的特性和功能获取到另一个类时,这个过程称为继承。通过这种方式,我们可以使用派生类对象重用、扩展或修改父类的所有属性和行为。这是面向对象编程中最重要的特性,可以减少程序的长度。

从另一个类或父类继承所有成员函数和功能的类称为派生类。而派生类从中获取某些特性的类称为基类或父类

Multiple Inheritance in C++

多重继承是 C++ 中继承的一个概念,它允许一个子类从多个基类继承属性或行为。因此,我们可以说,它是一个使派生类能够从多个基类获取成员函数、属性和特征的过程。

多重继承示意图

以下是C++ 编程语言中多重继承的示意图。

Multiple Inheritance in C++

在上图中,有两个父类:基类1基类2,而只有一个子类。子类从基类1和基类2中获取了所有特性。因此,我们将这种继承类型称为多重继承。

多重继承的语法

在上面的语法中,类 A 和类 B 是两个基类,而类 C 是子类,它继承了父类的一些特性。

让我们编写各种多重继承的程序,以使用派生类从多个基类继承成员函数和功能。

示例1:使用多重继承的程序

Program1.cpp

输出

It is the first function of the Base class
 It is the second function of the Base class
 It is the function of the derived class

在上面的程序中,我们创建了两个基类和一个子类。child_class 借助其对象 ch,从父类 Base_classBase_class2 中调用了成员函数 display() 和 display2()。

示例2:使用多重继承执行算术运算

让我们在 C++ 编程中创建一个派生类,以从多个基类继承成员函数。

Program2.cpp

输出

The Modulus of 12 and 5 is 2
 The sum of 20 and 30 is 50
 The Multiplication of 20 and 30 is 600
 The Division of 150 and 30 is 5
 The Subtraction of 50 and 30 is 20

示例3:使用多重继承计算六门科目的平均分

让我们在 C++ 编程语言中创建另一个程序,使用多重继承来打印六门科目的平均分。

Program3.cpp

输出

Enter the Roll No:
25
 Enter the marks of five subjects
90
85
98
80
75

 Enter the sports mark: 99


         Roll No: 25
         Total: 527

         Average Marks: 87

多重继承中的二义性问题

在多重继承中,当一个类从两个或多个基类或父类派生时,可能会出现两个父类拥有同名成员函数的情况。当子类对象调用其中一个同名成员函数时,就会出现二义性。因此,我们可以说,C++ 编译器在选择执行程序的类成员函数时会感到困惑。

演示多重继承中二义性问题的程序

让我们在 C++ 编程中编写一个简单的程序,通过派生类调用父类的同名成员函数。

Program4.cpp

当编译上述程序时,它会抛出错误,指出成员函数 show() 具有二义性。因为基类 A 和 B 都定义了同名的成员函数 show(),当派生类的对象调用 shows() 函数时,在多重继承中就会出现二义性。

因此,我们需要解决多重继承中的二义性问题。可以通过定义类名作用域解析(::)运算符来解决二义性问题,以指定在子类中调用成员函数时,该函数来自哪个类。

二义性解决方案的语法

例如:

做了一些修改后,我们再次执行上述程序,它将返回下面给出的输出。