C++ 中的动态绑定:解释、函数和实现

已发表: 2021-02-04

目录

介绍

本文将引导您完成 C++ 中动态绑定的工作 您应该对 C++ 中的继承和静态绑定的工作有基本的了解。 这是因为动态绑定消除了静态绑定的一些限制。 我们将向您展示动态绑定是如何有用的,以及适当和简单的代码。

什么是动态绑定?

通过绑定,我们通常是指将一个对象与另一个对象联系起来。 在编程语言方面,绑定并没有太大的不同。 它是函数定义和函数调用的链接。 但为什么是“动态的”? 简而言之,动态绑定只是将选择或选择要运行的函数延迟到运行时。 在 C++ 中使用动态绑定,我们可以根据对象的底层类型选择可以执行的函数。

使用静态绑定的程序员无法提供这种灵活性。 静态绑定过去发生在编译时而不是运行时。 此外,静态绑定在编译期间建立了函数调用和定义的链接,而正如您现在所知,动态绑定直到运行时才这样做。

动态绑定允许我们通过为我们提供在运行时选择我们需要的函数类型的灵活性来忽略类型差异 通过检查这个语句,我们可以理解动态绑定允许我们只使用一个函数名来处理不同的对象。 这降低了代码复杂性,也使程序员在调试时更容易。

虚函数

我们已经讨论了很多C++ 中的动态绑定。 但是如何进行呢? 要在 C++ 代码中实现动态绑定,您需要使用“虚拟函数”。 那么什么是虚函数呢?

本文不会深入讨论虚函数,因为它们对于单独的文章来说已经足够重要了。 但是您将获得有关虚函数的足够信息,以便清楚地理解动态绑定。

虚函数是特殊的成员函数,通过指针(或引用)进行的调用会在运行时根据带有指针的对象类型进行解析。 简单来说,如果在基类中定义虚函数,就可以在派生类中重写该函数。

这就是虚函数的威力。 在 C++ 中,您在函数定义的开头使用关键字“virtual”来定义虚函数。 您可能不必为基类的每个派生类重复关键字 virtual,因为一旦将函数声明为“虚拟”,它将在所有派生类中保持“虚拟”。

C++ 实现

那是关于虚函数的。 现在让我们看一个程序来理解C++ 中的动态绑定

程序#1

我们看到两个类:- A 类是“基”类,而 B 类是“派生类”。 在这两个类中,都有一个同名“display”的函数。 在父类中,有另一个名为 final_print() 的函数调用 display() 函数。 在 main() 函数中,我们为两个不同的类创建两个不同的对象,调用相同的 display() 函数。

让我们看看上面程序的输出。

程序 #1 的输出:

正如预期的那样,输出执行基类的 display() 函数两次,因为它是在编译时定义的(静态绑定)。 但这不是我们想要的输出。

现在要将上述代码转换为动态绑定代码,我们需要使用虚函数。 让我们看看如何做到这一点。

程序#2:

我们只需在 A 类和 B 类中为我们的 display() 函数添加“virtual”关键字,从而使它们成为虚拟函数。 这是唯一需要的改变。 就像之前一样,我们使用两个不同的对象调用同一个 final_print() 函数。 让我们看看我们现在得到了什么输出。

程序 #2 的输出

这是我们想要的输出,我们使用函数的动态绑定得到它。

从世界顶级大学在线学习软件课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

在本文中,我们介绍了C++ 中动态绑定的概念 总而言之,动态绑定允许我们通过调用单个函数来处理不同的对象来灵活地处理。 从我们的代码中可以明显看出,我们通过创建两个不同的对象来调用相同的函数 display() 来为我们提供两个不同的输出。 这是可能的,因为动态绑定发生在运行时,不像静态绑定发生在编译时。

如果您有兴趣了解有关全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和任务, IIIT-B 校友身份,实用的实践顶点项目和顶级公司的工作协助。

什么是 C++ 编程语言?

C++ 是一种通用编程语言。 它是世界上使用最广泛的编程语言之一。 C++ 是 C 语言的增强版本,并提供了促进面向对象编程的工具。 C ++是一种通用编程语言,而C是一种专用编程语言。 C++ 是作为 C 的扩展而创建的,以支持面向对象的编程,用于开发桌面应用程序、移动设备应用程序、嵌入式和实时系统以及 Web 应用程序和服务。 C++ 是一种命令式、过程式、多范式、已编译的通用编程语言。 它支持结构化编程、面向对象编程和通用编程。 它具有动态类型系统和显式内存管理。

什么是面向对象编程?

OOP 是创建可重用、易于维护和可读代码的方法。 简而言之,OOP 是一种基于围绕现实世界对象设计软件的编程范式。 例如,在 Java 中,如果您想设计一个处理书籍的软件,您可以创建一个名为 Book 的类,然后创建代表一本书的此类的单独实例(对象)。 这同样适用于您需要在软件中创建的其他类。

什么是 C++ 中的动态绑定?

动态绑定将程序文本中标识符的含义与在运行时找到的标识符的定义相关联。 这种意义关联称为绑定。 它是面向对象编程的基本原则。 动态绑定的标识符是面向对象的类层次结构的分支和叶子。 它们是动态的,因为它们是在运行时解决的,而不是在编译时解决的。 面向对象的类层次结构的分支和叶子是动态的,因为它们绑定到从它们派生的类。