C++ 上行转换和下行转换

17 Mar 2025 | 4 分钟阅读

本节将讨论 C++ 编程语言中向上转型和向下转型的示例。当我们将一种数据类型转换为另一种类型时,这个过程称为类型转换。但是,向上转型和向下转型是对象类型转换的类型。假设父类和子类有两种类型的对象,parent_obj 和 child_obj,可以使用 C++ 编程中的向上转型和向下转型将它们转换为父类到子类和子类到父类。

Upcasting and Downcasting in C++

向上转型

它是从基类的指针或引用创建派生类的指针或引用的过程,这个过程称为向上转型。这意味着向上转型用于将派生类的引用或指针转换为基类。与向下转型相比,向上转型是安全的类型转换。它允许公共继承,隐式地将一个类的引用转换为另一个类,而无需显式类型转换。默认情况下,向上转型在基类和派生类之间创建“is-a”关系。

派生类可以继承所有基类属性,包括数据成员和成员函数,以使用派生类对象执行函数,就像我们使用基类对象一样。

C++ 中向上转型的程序示例

让我们考虑一个在 C++ 编程语言中将派生类的指针转换为基类的指针的示例。

Program1.cpp

输出

It is the Super function of the Base class

向下转型

向下转型是向上转型的相反过程,它将基类的指针或引用转换为派生类的指针或引用。它手动将基类的对象转换为派生类的对象,因此我们必须指定显式类型转换。在大多数情况下,向下转型不遵循is-a关系。它不如向上转型安全。此外,派生类可以添加新功能,例如:使用这些数据成员的新数据成员和类成员函数。但是,这些功能不能应用于基类。

C++ 中向下转型的程序示例

让我们创建一个示例,在 C++ 编程语言中将基类的对象向下转型为派生类。

Program2.cpp

输出

It is the function of the Child class

C++ 中向上转型和向下转型的程序示例

让我们考虑一个示例,在 C++ 中使用向下转型和向上转型将基类转换为派生类,并将派生类的对象转换为基类。

Program3.cpp

输出

I am in the Parent class
 I am in the Parent class
 I am in the Myson class