虚函数(virtual function)和c语言中的纯虚函数++(pure virtual function in c++)的区别

虚函数是在基类中声明并由派生类重新定义的成员函数。当您使用指向基类的指针或引用引用派生类对象时,可以为该对象调用虚拟函数并执行派生类版本的函数。虚拟函数确保为对象调用正确的函数,而不管用于进行函数调用的表达式是什么。...

什么是虚函数(a virtual function)?

虚函数是在基类中声明并由派生类重新定义的成员函数。当您使用指向基类的指针或引用引用派生类对象时,可以为该对象调用虚拟函数并执行派生类版本的函数。虚拟函数确保为对象调用正确的函数,而不管用于进行函数调用的表达式是什么。

虚拟函数解析为“迟”。如果所讨论的函数在基类中是“虚拟”的,则根据所引用对象的实际类型调用最派生类的函数实现,而不管指针或引用的声明类型如何。如果它不是“虚拟”的,则该方法被解析为“早期”,并根据指针或引用的声明类型进行选择。

这个概念是面向对象编程(OOP)的(运行时)多态部分的一个重要部分。简而言之,虚拟函数定义了要执行的目标函数,但在编译时可能不知道目标函数。

关于虚拟功能,您需要了解什么

  • 虚函数是基类中的成员函数,可以在派生类中重新定义。
  • “虚函数”在基类中有其定义。
  • 所有派生类可以重写基类的虚函数,也可以不重写基类。
  • 如果派生类未能重新定义(重写)虚函数,则可以使用基类的虚函数。
  • 可以实例化包含虚拟函数的基类,即可以创建其对象。
  • 具有虚拟函数的类不是抽象的。
  • 函数调用的解析在运行时完成。
  • 它用于告诉编译器对函数执行动态链接或后期绑定。

什么是纯虚函数(a pure virtual function)?

纯虚函数是类中没有定义的虚函数。其定义仅存在于派生类中,即派生类必须提供纯虚函数的定义。换句话说,它可以被视为一个空函数,这意味着纯虚函数没有相对于基类的任何定义。

具有纯虚函数的类不能用于创建自己的直接对象。这意味着类包含任何纯虚函数,那么我们不能创建该类的对象。这种类型的类称为抽象类。程序员需要在派生类中重新定义纯虚函数,因为它在基类中没有定义。

关于纯虚函数你需要知道的

  • 纯虚函数是基类中的成员函数,其声明在基类中提供,并在派生类中实现。
  • 纯虚函数在基类中没有定义。
  • 所有派生类都必须重写基类的虚函数。
  • 如果派生类未定义纯虚函数;它不会抛出任何错误,但派生类成为抽象类。
  • 包含纯虚函数的基类,即抽象类不能被实例化,因为抽象类没有完全定义。
  • 包含纯虚函数的基类变得抽象。
  • 抽象类主要用于向上转换,以便其派生类可以使用其接口。

  • 发表于 2022-09-10 13:20
  • 阅读 ( 161 )
  • 分类:IT

你可能感兴趣的文章

宏(macro)和内联函数(inline function)的区别

...含表达式,例如#define AREA 4*5.56。 什么是内联函数(inline function)? 当一个函数被调用时,编译器需要一些时间来执行它。如果函数不是很复杂,程序员可以将函数转换为内联函数。参考以下程序。 图02:没有内联的函数 print_hello...

  • 发布于 2020-10-19 00:27
  • 阅读 ( 403 )

函数式程序设计(functional programming)和命令式程序设计(imperative programming)的区别

...与表格形式的命令式编程 6.摘要 什么是函数式程序设计(functional programming)? 函数式程序设计是以数学为基础的。函数式编程背后的关键原则是,所有的计算都被看作是独立数学函数的组合。数学函数将输入映射到输出。假设有...

  • 发布于 2020-10-19 02:12
  • 阅读 ( 472 )

功能原型(function prototype)和c语言中的函数定义(function definition in c)的区别

...函数定义的表格形式 6. 摘要 什么是c语言中的函数原型(function prototype in c)? 函数原型提供函数声明。它指定函数的名称、返回类型、参数。返回类型是从函数返回的数据类型。当函数返回整数时,返回类型为int;当函数返回floa...

  • 发布于 2020-10-19 16:08
  • 阅读 ( 746 )

什么是编程中的函数?

... 什么是函数(a function)? ...

  • 发布于 2021-03-29 16:35
  • 阅读 ( 255 )

功能(function)和程序(procedure)的区别

功能与程序 计算机编程是软件开发过程的一个阶段。它被认为是一门手艺、一门艺术和一门工程学科,可以为计算机用户遇到的问题创建一个有用的软件解决方案。在编写计算机程序时,程序员使用一种程序设计语言。程序设...

  • 发布于 2021-06-23 15:49
  • 阅读 ( 254 )

存储过程(stored procedure)和功能(function)的区别

...将在学生表中选择名为“Ann”的所有学生。 什么是功能(function)? 函数是执行特定任务的一组指令。几乎所有的编程语言,如C++、C、java和Python都允许程序员编写函数。一个函数允许重复使用同一组指令。此外,它组织整个代码...

  • 发布于 2021-06-30 23:16
  • 阅读 ( 1057 )

静止的(static)和C++中的常量函数(constant function in c++)的区别

... 静态函数,常数函数,C++ 什么是C++中的静态函数(static function in c++)? 用static关键字定义的函数是静态函数。通常,函数处理对象。程序员使用对象来调用这些函数。但是,它在静态函数中是不同的。它们在类级别工作,而不...

  • 发布于 2021-07-01 09:34
  • 阅读 ( 269 )

友元函数(friend function)和C++中的正规函数(normal function in c++)的区别

...C++,Fuffic函数,正规函数 什么是C++中的Fuffic函数(friend function in c++)? 类中可以有私有和受保护的数据成员。不可能访问类外的私有数据成员。我们可以通过类及其子类访问受保护的成员。因此,这两个访问修饰符限制对数据成...

  • 发布于 2021-07-01 11:43
  • 阅读 ( 247 )

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

...化编程语言。因此,它具有循环(for、while、do-while)、函数、决策(if/else)等特性。 C是其他现代语言(如Python、Java、Perl和Ruby)的基础。C程序执行速度更快,因为它们使用编译器将源代码转换为等效的机器代码。此外,它还...

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

函数声明(function declaration)和c程序设计中的函数定义(function definition in c programming)的区别

...,函数声明,函数定义 什么是c程序设计中的函数声明(function declaration in c programming)? 函数声明指示编译器关于特定函数的信息。语法如下。 返回\类型函数\名称(参数列表); 函数名有助于识别函数。参数列表包含传递给函...

  • 发布于 2021-07-01 13:49
  • 阅读 ( 349 )
Ts137379
Ts137379

0 篇文章

相关推荐