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

虚函数和纯虚函数的主要区别在于虚函数是基类中使用Virtual关键字声明的函数,而纯虚函数是基类中没有函数定义的虚函数。...

虚函数和纯虚函数的主要区别在于虚函数是基类中使用Virtual关键字声明的函数,而纯虚函数是基类中没有函数定义的虚函数。

多态性是面向对象的一个重要概念。它允许一个对象有多种形式。有两种类型的多态性称为早期结合和晚期结合。C++是一种支持面向对象编程的编程语言。因此,程序员可以使用C++实现多态性概念。

覆盖的关键领域

1.什么是虚拟功能-定义,功能2.什么是纯虚拟功能-定义,功能3.虚拟功能和纯虚拟功能的区别-关键区别比较

关键术语

面向对象,纯虚函数,虚函数

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

什么是虚函数(virtual function)?

虚函数是基类中带有virtual关键字的函数。它有助于指示编译器,当子类也具有与其他实现相同的方法时,不应存在静态链接。参考下面的程序更容易理解这个概念。

Difference Between Virtual Function and Pure Virtual Function

Figure 1 : C++ program

在上面的程序中,类A有一个名为display的公共方法。B类继承A类。它有一个名为display的方法。两个方法的名称相同,但实现不同。在main方法中,“a”是指针,而“b”是类型b的对象。然后“a”被分配了b的地址。最后,程序员可以使用“a”调用display方法。在这里,我们可以看到输出显示了类A的display方法。即使程序员将“b”的地址分配给“a”(b=&a),它仍然打印类a的显示方法。这是由于静态连接造成的。换句话说,函数调用在执行程序之前是固定的。显示功能在编译期间设置。我们也称之为早期绑定。

为了使编译器在运行时识别对象类型并绑定函数调用,程序员可以使用关键字“virtual”与基类。为了实现这一点,他可以对上面的程序做一个小的修改。这是在基类函数前面添加虚拟关键字,如下所示。

Main Difference - Virtual Function vs Pure Virtual Function

Figure 2: C++ program with virtual function

现在类A中的显示函数是一个虚函数。我们可以观察到输出显示的是B类的显示方法。首选B型。换句话说,函数的调用取决于对象。因此,这是动态绑定或后期绑定。

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

虚拟函数不执行任务。没有定义或实现的函数是不做任何事情的函数。因此,这种函数是纯虚函数。此外,不可能声明具有纯虚函数的类的对象。这些类称为抽象基类。

Difference Between Virtual Function and Pure Virtual Function_Figure 3

Figure 3: C++ program with pure virtual function

子类必须为基类的虚函数提供定义。类a中的显示函数不需要函数定义。因此,它没有函数定义。=0表示编译器该函数没有定义。因此,类A中的显示函数称为纯虚函数。由于类A有一个纯虚函数,所以称为抽象基类。

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

定义

虚函数是在基类中声明的成员函数,可以由派生类重新定义或重写,而纯虚函数是基类中没有实现的虚函数。因此,这就是虚函数和纯虚函数的主要区别。

函数定义

此外,函数定义是虚函数与纯虚函数的一个重要区别。在虚函数中,基类具有函数定义。但是,在纯虚函数中,基类没有函数定义。它只有函数声明。

派生类

此外,虚拟函数和纯虚拟函数的另一个区别是,所有派生类都不必重写基类的虚拟函数。但是,派生类应该覆盖基类的纯虚拟函数。

抽象类

此外,虚函数中没有抽象的类概念。如果至少有一个纯虚函数,则该类称为抽象类。

结果

不重写基类的虚函数的派生类不会导致任何编译错误。但是,如果派生类不重写基类的纯虚函数,则会导致编译错误。因此,这也是虚函数和纯虚函数的区别。

结论

程序员可以用C++编写虚拟函数。纯虚函数是一种特殊的虚函数。虚函数和纯虚函数的主要区别在于虚函数是基类中使用virtual关键字声明的函数,而纯虚函数是基类中没有函数定义的虚函数。

引用

1.射箭。C-50中的虚拟功能,代码射箭,2017年3月22日,在这里提供。2.“C虚拟函数–Javatpoint.”Www.Javatpoint.com,可在此处获取。3.“C虚拟函数”,Geeksforgeks,2018年9月17日,可在此处获取。4.“C语言中的纯虚拟函数和抽象类”,Geeksforgeks,2018年9月11日,可在此处获得。 2.“C虚拟函数–Javatpoint”,Www.Javatpoint.com, 3.“C中的虚拟函数”,Geeksforgeks,2018年9月17日, 4.“C语言中的纯虚函数和抽象类”,Geeksforgeks,2018年9月11日,

  • 发表于 2021-07-01 14:13
  • 阅读 ( 478 )
  • 分类:IT

你可能感兴趣的文章

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

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

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

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

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

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

状态函数(state function)和路径函数(path function)的区别

状态函数(state function)和路径函数(path function)的区别 热力学是物理化学的一个重要分支,它揭示了不同形式的能量和功之间的热化学关系。有四个热力学定律用于描述热力学系统的行为。状态函数和路径函数是表示系统不同热...

  • 发布于 2020-10-24 02:43
  • 阅读 ( 1411 )

什么是编程中的函数?

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

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

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

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

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

关系(a relation)和函数(a function)的区别

...同样,关系数据库中的表也是一个关系。 什么是函数(a function)? 函数是执行某项任务的一组语句。它也称为过程或方法。程序员可以将主程序分成多个函数,并根据需要调用它们。而且,这使得程序更易于管理。 此外,它还提...

  • 发布于 2021-07-01 05:56
  • 阅读 ( 287 )

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

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

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

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

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

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

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

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

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

函数式程序设计(functional programming)和面向对象程序设计(object oriented programming)的区别

...向对象编程、多态性、递归函数 什么是函数式程序设计(functional programming)? 函数式编程允许使用数学函数构建程序。换句话说,它将程序绑定为纯数学函数样式。使用函数式编程,开发人员可以将一个程序构建为单独数学函数...

  • 发布于 2021-07-01 17:38
  • 阅读 ( 889 )
黑子耶格尔
黑子耶格尔

0 篇文章

相关推荐