C++ 单继承

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

在 C++ 中,单一继承是面向对象编程 (OOP) 中的一个重要概念,它允许派生类从另一个基类继承其属性和行为。

Single Inheritance in C++

在 C++ 中,其属性和行为被继承以实现重用性的类称为超类(基类)。从基类继承属性和行为的类称为子类(派生类)。它使派生类能够访问和利用基类的功能。它有助于提高代码重用性并减少冗余。

语法

它具有以下语法:

在此语法中

  • 基类: 它表示派生类从中继承其属性和功能的类名。
  • 派生类: 它表示可以继承基类属性和行为的类名。
  • 访问修饰符: 它在类声明中提供访问修饰符,因为它定义了派生类将如何继承基类成员。

C++ 中单一继承的示例

让我们举一个例子来说明 C++ 中的单一继承。

示例

编译并运行

输出

Name: Alice
Age: 20
Course: Computer Science

说明

在此示例中,Student 类继承自 Person 类。它允许 Student 对象访问个人和课程详细信息,并使用继承和自己的方法显示它们。

C++ 中单一继承的歧义

在 C++ 中,当派生类从基类继承,并且两个类都定义具有相同名称和签名的成员函数时,就会发生单一继承的歧义。当派生类对象尝试调用函数时,编译器无法确定是执行基类中的函数还是派生类中的函数。

当派生类没有明确覆盖基类的函数或无法确定调用哪个版本时,就会出现这种歧义,这可能导致潜在的混淆和编译错误。

如果我们要避免这种歧义情况,我们可以使用作用域解析运算符来分别定义这些函数。

C++ 中单一继承歧义的示例

让我们举一个例子来说明 C++ 中单一继承的歧义。

示例

编译并运行

输出

Manager Details:
ID: 201
Name: Michael
Department: Web Developer
Employee Details:
ID: 101
Name: Alice

说明

在此示例中,我们有一个基类 Employee 和一个派生类 Manager。Employee 和 Manager 类都具有函数名 display(),但参数不同。

派生类隐藏了基类 employee 中的 display(int) 函数。这可能会导致看起来像单一继承中的歧义。当调用 man.display() 函数时,它会调用派生类版本,而基类版本应该使用 man.Employee::display(101) 函数显式访问。

使用 C++ 中单一继承的加法程序

让我们看一个使用 C++ 中单一继承的加法程序。

示例

编译并运行

输出

Enter the First Number: 30
Enter the Second Number: 25
The addition of 30 and 25 is 55

说明

在此示例中,我们有一个基类 Input,它从用户那里获取两个数字作为输入,而派生类 Addition 继承这些值并执行加法。之后,getInput() 函数属于基类,派生类中的 add() 函数使用继承的数据成员来计算和显示总和。

C++ 中单一继承的优点

C++ 中单一继承的几个优点如下

  • 代码重用性: 类的公共属性可以在基类中定义一次,并在派生类中重用。
  • 更简单、更简洁的代码: 它有助于使代码更具可读性和组织性,因为我们分离了公共和特定功能。
  • 更容易维护: 如果我们想更新共享功能,我们只需要更改基类。它减少了错误并简化了调试。
  • 可扩展性: 它提供了在现有类上实现继承的多种方式,并且可以在派生类中添加功能,同时保留基类的原始功能。

C++ 中单一继承的局限性

C++ 中单一继承的几个局限性如下

  • 我们只能从一个基类继承,不能从多个类继承。
  • 当程序需要多个类的功能时,管理变得困难。
  • 如果基类发生变化,也可能会影响派生类。
  • 两个从相同基类继承的类不能直接共享代码。
  • 我们不能重用其他不相关类的功能。

C++ 单一继承 MCQ

1) C++ 中的单一继承是什么?

  1. 一个从两个类继承的类
  2. 一个从一个类继承的类
  3. 一个不继承任何类的类
  4. 以上都不是
 

答案:b) 一个从一个类继承的类


2) 下列哪个关键字用于 C++ 中的继承?

  1. include
  2. inherits
  3. public
  4. using
 

答案:c) public


3) 在单一继承中,派生类从 C++ 中的基类获得什么?

  1. 仅函数
  2. 函数和变量
  3. 仅变量
  4. 什么都没有
 

答案:b) 函数和变量


4) 如果类 B 继承自类 A,哪个是基类?

  1. 类 B
  2. 类 A
  3. 类 A 和 B
  4. 以上都不是
 

答案:b) 类 A


5) 下列哪个选项显示了 C++ 中单一继承的正确语法?

  1. class A : B {}
  2. class B inherits A {}
  3. inherit B from A
  4. class B : public A {}
 

答案:d) class B : public A {}


下一个主题C++ 中的多级继承