当前位置: 首页 > wzjs >正文

网站建设论文题目八师石河子精神文明建设网站

网站建设论文题目,八师石河子精神文明建设网站,宁波网站搭建公司定制,织梦网站栏目访问目录在 C 中,虚函数(virtual function)使得通过基类指针或引用调用派生类中的函数时能够实现动态绑定(动态多态)。虚函数允许程序在运行时根据实际对象的类型(而不是指针或引用的类型)来决定调用哪个…

在 C++ 中,虚函数virtual function)使得通过基类指针或引用调用派生类中的函数时能够实现动态绑定(动态多态)。虚函数允许程序在运行时根据实际对象的类型(而不是指针或引用的类型)来决定调用哪个函数,这就是多态的核心。

多态有两种类型:

  • 静态多态:编译时决定调用哪个函数,通常通过函数重载和模板实现。
  • 动态多态:运行时根据对象的实际类型决定调用哪个函数,这通常通过虚函数来实现。

虚函数与多态的使用通常依赖于继承。当基类和派生类之间存在继承关系时,基类中的虚函数可以被派生类重写(重载),并且在使用基类指针或引用调用该函数时,程序会自动调用派生类的实现。

虚函数和多态的实现

我们来看一个详细的例子来理解虚函数与多态是如何工作的:

#include<iostream>
using namespace std;class Base {
public:virtual void display() {  // 声明虚函数cout << "Base display function" << endl;}virtual ~Base() {  // 虚析构函数cout << "Base destructor called" << endl;}
};class Derived : public Base {
public:void display() override {  // 重写虚函数cout << "Derived display function" << endl;}~Derived() {  // 派生类析构函数cout << "Derived destructor called" << endl;}
};int main() {// 使用基类指针指向派生类对象Base* basePtr = new Derived();  // 基类指针指向派生类对象basePtr->display();  // 调用的是Derived类的display函数,因为display是虚函数// 删除派生类对象,调用虚析构函数delete basePtr;  // 这里会先调用Derived的析构函数,然后调用Base的析构函数return 0;
}

输出如下

  • 虚函数的声明:Base 类中,display 函数被声明为虚函数 (virtual),这意味着如果有派生类继承自 Base 并重写这个函数,那么在通过基类指针或引用调用时,程序将根据实际的对象类型来决定调用哪个版本的 display 函数。

  • 函数重写: Derived 类继承自 Base 类,并重写了 display 函数。注意,在 Derived 类中重写 display 时,使用了 override 关键字。这个关键字不是必需的,但它能帮助编译器检查我们是否正确重写了基类的虚函数。如果基类没有虚函数,或者函数签名不匹配,编译器会报错。

  • 动态绑定:main 函数中,我们创建了一个基类指针 basePtr,并将其指向一个 Derived 类对象。虽然 basePtrBase 类型的指针,但由于 display 是虚函数,C++ 会在运行时通过指针指向的实际对象类型来调用合适的版本。因此,即使我们通过基类指针调用了 display 函数,实际调用的是 Derived 类中的版本,而不是 Base 类中的版本。

  • 虚析构函数: 在删除对象时,如果基类指针指向派生类对象,并且基类的析构函数是虚拟的,那么程序会先调用派生类的析构函数,再调用基类的析构函数。这样可以确保派生类对象的资源得到正确释放,避免资源泄漏。

为什么要使用虚函数和多态?

  1. 动态绑定: 通过虚函数,可以在运行时决定调用哪个版本的函数。这样可以让代码更加灵活。例如,如果你有多个类继承自基类,并且这些类实现了相同的接口(虚函数),那么你就可以通过基类指针或者引用来操作这些派生类对象,而不需要关心它们的具体类型。

  2. 代码的扩展性: 如果你的程序中有一个使用基类指针的部分,而你需要向程序中添加新的类,只要这些新类实现了基类的虚函数接口,你的程序就能够正确处理它们,而不需要修改原有代码。

  3. 多态的实现: 多态是面向对象编程中一个强大的特性,它可以让你用统一的接口操作不同类型的对象,这使得代码更加简洁和高效。

小小总结一下

  • 虚函数:声明为 virtual 的函数,可以被派生类重写,支持运行时动态绑定。
  • 动态多态:基类指针或引用调用派生类的重写函数,在运行时通过对象的实际类型决定调用哪个版本的函数。
  • 虚析构函数:当通过基类指针删除派生类对象时,确保调用派生类的析构函数。

文章转载自:

http://TsCtCJmE.scjtr.cn
http://ehiylsej.scjtr.cn
http://IfAe1ESs.scjtr.cn
http://bP9Bddik.scjtr.cn
http://uzgeecga.scjtr.cn
http://eDy3lHRp.scjtr.cn
http://J6G1Rzu9.scjtr.cn
http://l3txhC4n.scjtr.cn
http://9wWUfAOp.scjtr.cn
http://EnwvUDSH.scjtr.cn
http://xmoDqAGl.scjtr.cn
http://ClAjVA05.scjtr.cn
http://DhOr9uOE.scjtr.cn
http://KZXqoMQx.scjtr.cn
http://q0nUnl4R.scjtr.cn
http://8H1RZq81.scjtr.cn
http://QOjr84gi.scjtr.cn
http://WrdkNmc9.scjtr.cn
http://im3pBo3E.scjtr.cn
http://gu4dTwNn.scjtr.cn
http://9sKfNOKr.scjtr.cn
http://C3p5snRv.scjtr.cn
http://Z6UoEN6S.scjtr.cn
http://7MK7n7IW.scjtr.cn
http://Mqf3y7iy.scjtr.cn
http://bPdlgOoc.scjtr.cn
http://UisHw4yA.scjtr.cn
http://b9gFPRk7.scjtr.cn
http://afLYnzUh.scjtr.cn
http://jHNGb1lC.scjtr.cn
http://www.dtcms.com/wzjs/654209.html

相关文章:

  • 新手如何做英文网站赚美元wordpress 游戏模版
  • 怎么组建企业网站给男票做网站表白的软件
  • 网络站点推广的方法有哪些wordpress安装时失败
  • flash教程网站都有哪些wordpress sql server
  • 成都营销网站设计什么是网站建设策划
  • 做消费网站流程网站建设费用上海
  • dedecms如何做网站网站建设维护和网页设计
  • 手机网站发展东莞市建设信息网
  • 企业官方网站建设费用企业邮箱注册哪个好
  • 怎样做机械租赁的网站网站开发中的视图页面指的是什么
  • 淄博网站开发国外中文网站排行
  • 中小企业网站制作2021半夜好用的网站
  • 顺的网站建设案例查看网站百度排名
  • 长安东莞网站设计非自己的网站如何做二次跳转
  • 手机在线电影网站网站开发项目怎么接
  • 淘宝客网站源码加各类插件一站式服务门户
  • 服务好的高端网站建设报价重庆建设公司排名
  • 宁波企业网站设计上海建站提供商
  • 企业介绍微网站怎么做企业管理咨询的内容
  • 池州网站建设电话wordpress是不是一定要买服务器
  • 高端企业网站建设注意问题工作室名字创意好听
  • 学校网站框架WordPress图片文章失败
  • 怎么制作微信购物网站劳动局免费咨询律师电话
  • 东莞营销网站建设哪个平台好wordpress标题翻译插件
  • 做网站需要什么编程语言没钱可以注册一千万的公司吗
  • wordpress 扒站教程wordpress 修改建站时间
  • 网络企业网站建设方案建站之星建出来的网站如何上传
  • 网站备案查询工信部手机版天津软件定制开发
  • 网站备案率是什么建立网站需要多少钱八寇湖南岚鸿团队
  • 做网站用apache还是nginxcdr做网站分辨率