编译时(compile time)和C++中的运行时多态性(run time polymorphism in c++)的区别

多态性是指具有多种形式的能力。多态性被认为是面向对象编程的重要特征之一。在C++中,多态性主要分为编译时多态(静态)或动态(运行)多态两种类型。在动态多态性中,对函数的响应在运行时确定,而在静态多态性中,对函数的响应在编译时确定。...

多态性是指具有多种形式的能力。多态性被认为是面向对象编程的重要特征之一。在C++中,多态性主要分为编译时多态(静态)或动态(运行)多态两种类型。在动态多态性中,对函数的响应在运行时确定,而在静态多态性中,对函数的响应在编译时确定。

编译时多态性(静态多态性)

编译时多态性也称为静态多态性,是通过函数重载或运算符重载实现的。

函数重载

如果有多个同名但参数不同的函数,则称这些函数重载。函数可以通过改变参数的数量或类型而重载。

007Ys3FFgy1gwyfvp3phbj30gz0fraaj

运算符重载

C++还提供了对过载操作符的选项。例如,我们可以使string类的运算符(“+”)连接两个字符串。我们知道,这是一个附加运算符,其任务是添加两个操作数。因此,当将单个运算符“+”放置在整数操作数之间时,addsItem,当放置在字符串操作数之间时,将它们连接起来。

007Ys3FFgy1gwyfvpu90yj30g80ekglu

关于编译时,您需要了解什么

  • 函数调用的绑定和选择正确的函数声明由编译器在编译时完成。
  • 编译时多态性是通过函数重载和运算符重载实现的。
  • 编译时多态性的属性和行为是静态绑定/静态解析的经典示例。
  • 在编译时多态性中,调用由编译器解析。
  • 重载是编译时多态性,其中多个方法使用不同的参数或签名以及不同的返回类型共享相同的名称。
  • 编译时多态性不太灵活,因为所有东西都在编译时执行。
  • 它提供了快速执行,因为它在编译时很早就知道了。

运行时多态性(动态多态性)

运行时多态性也称为dynamicpolymorphism,通常通过函数重写来实现。当derivedclass为基类的一个成员函数定义时,会发生函数重写。basefunction被称为被重写。

007Ys3FFgy1gwyfvqmjy2j30du0e1dg1

关于运行时多态性,您需要了解什么

  • 绑定在运行时发生。
  • 运行时多态性是通过虚拟函数和指针实现的。
  • 运行时多态性的属性和行为是动态绑定和后期绑定的经典示例。
  • 在运行时多态性中,编译器不会解析调用。
  • 重写是具有相同参数或签名的相同方法,但在类及其子类中关联的运行时多态性。
  • 运行时多态性更灵活,因为所有东西都在运行时执行。
  • 与早期绑定相比,它的执行速度较慢,因为它在运行时已知。

Also Read: Difference Between Stack And Heap In C++

编译时(compile time)和表格形式的运行时多态性(run time polymorphism in tabular form)的区别

比较基础 编译时多态性 运行时多态性
结合 函数调用的绑定和选择正确的函数声明由编译器在编译时完成。 绑定在运行时发生。
它是如何实现的 编译时多态性是通过函数重载和运算符重载实现的。 运行时多态性是通过虚拟函数和指针实现的。
特性和行为 编译时多态性的属性和行为是静态绑定/静态解析的经典示例。 运行时多态性的属性和行为是动态绑定和后期绑定的经典示例。
呼叫 在编译时多态性中,调用由编译器解析。 在运行时多态性中,编译器不会解析调用。
最重要的 重载是编译时多态性,其中多个方法使用不同的参数或签名以及不同的返回类型共享相同的名称。 重写是具有相同参数或签名的相同方法,但在类及其子类中关联的运行时多态性。
灵活性 编译时多态性不太灵活,因为所有东西都在编译时执行。 运行时多态性更灵活,因为所有东西都在运行时执行。
执行速度 它提供了快速执行,因为它在编译时很早就知道了。 与早期绑定相比,它的执行速度较慢,因为它在运行时已知。

Also Read: Difference Between Procedural And Object Oriented Programming

  • 发表于 2021-11-29 17:07
  • 阅读 ( 191 )
  • 分类:IT

你可能感兴趣的文章

编译时间(compile time)和运行时(runtime)的区别

关键区别-编译时与运行时 大多数程序都是用高级编程语言编写的。这些编程语言的语法与英语相似。高级语言很容易被人类理解,但计算机却无法理解。因此,编写的程序或源代码应转换成机器可理解的格式。它被称为机器...

  • 发布于 2020-10-19 10:25
  • 阅读 ( 771 )

多态性(polymorphism)和oop中的继承(inheritance in oop)的区别

...封装四大支柱。本文讨论了OOP中多态与继承的区别。OOP中多态性与继承的关键区别在于多态性是一个对象以多种方式表现的能力,而继承则是使用现有类的属性和方法创建一个新的类。 目录 1. 概述和主要区别 2. 什么是OOP中的多...

  • 发布于 2020-10-19 21:16
  • 阅读 ( 553 )

c编程的特点,使其独特(和更好)

...C语言开发的,人们认识到面向对象的概念(包括封装、多态性等)将有助于管理复杂性。这导致了C++作为C的超集的发展。 ...

  • 发布于 2021-03-13 04:35
  • 阅读 ( 214 )

编译程序(compiler)和交叉编译器(cross compiler)的区别

编译器和交叉编译器的主要区别在于,编译器是一种将用高级编程语言编写的计算机程序转换成机器语言的软件,而交叉编译器是一种可以为运行编译器的平台以外的平台创建可执行代码的编译器。 程序员用高级语言为计算机...

  • 发布于 2021-06-30 18:25
  • 阅读 ( 351 )

石斑鱼类(ide)和编译程序(compiler)的区别

IDE和编译器之间的主要区别在于IDE是一个软件套件,由开发和测试软件应用程序所需的工具组成,而编译器是一个将用高级编程语言编写的源代码翻译成低级机器代码的程序。 IDE提供了一个创建、构建和测试软件应用程序的环...

  • 发布于 2021-07-01 03:13
  • 阅读 ( 394 )

C++(c++)和JAVA(java)的区别

...,可以实现面向对象的编程概念,如继承、抽象、封装和多态性以及结构化编程概念,如选择(IF,EASE),重复结构(用于、做、而等)C++等。此外,这种语言允许动态内存分配。程序员可以通过调用free()函数来释放分配的...

  • 发布于 2021-07-01 07:51
  • 阅读 ( 336 )

继承(inheritance)和java中的多态性(polymorphism in java)的区别

Java中继承性和多态性的主要区别在于继承允许类使用已经存在的类的属性和方法,而多态性允许对象以多种方式运行。 面向对象编程(OOP)是软件开发中的一种常见编程范式。它有助于使用对象对现实世界场景进行建模。Java是...

  • 发布于 2021-07-01 09:50
  • 阅读 ( 430 )

C(c)和C++(c++)的区别

...、Perl和Ruby)的基础。C程序执行速度更快,因为它们使用编译器将源代码转换为等效的机器代码。此外,它还提供了一套丰富的库。因此,程序员可以使用该库中可用的函数来编写高效的程序。操作系统、网络驱动程序、编译器...

  • 发布于 2021-07-01 12:20
  • 阅读 ( 236 )

虚函数(virtual function)和纯虚函数(pure virtual function)的区别

...的函数,而纯虚函数是基类中没有函数定义的虚函数。 多态性是面向对象的一个重要概念。它允许一个对象有多种形式。有两种类型的多态性称为早期结合和晚期结合。C++是一种支持面向对象编程的编程语言。因此,程序员可...

  • 发布于 2021-07-01 14:13
  • 阅读 ( 487 )

静止的(static)和java中的动态多态性(dynamic polymorphism in java)的区别

静态多态性和动态多态性的主要区别在于,静态多态性是一种在编译时解析的多态性,而动态多态性是一种在运行时解析的多态性。 OOP是一种流行的软件范例,它允许程序员将真实世界的场景建模为对象。多态性是OOP的一个主...

  • 发布于 2021-07-01 21:17
  • 阅读 ( 306 )
yushaonainai
yushaonainai

0 篇文章

相关推荐