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

福田网站建设公司乐云seo网页设计工资一般多少

福田网站建设公司乐云seo,网页设计工资一般多少,b2c网站比较,网站代码框架抽象类 抽象类的定义 只要有纯虚函数的类就是抽象类 什么是纯虚函数&#xff1f; 纯虚函数是一种特殊的虚函数&#xff0c;它是没有函数体的虚函数 纯虚函数的语法&#xff1a; class <类名> { public:virtual <类型><函数名>(<参数表>) 0; };…

抽象类

抽象类的定义

只要有纯虚函数的类就是抽象类

什么是纯虚函数?

纯虚函数是一种特殊的虚函数,它是没有函数体的虚函数

纯虚函数的语法:

class <类名> 
{
public:virtual <类型><函数名>(<参数表>) = 0;
};

纯虚函数的特点:

  1. 子类继承父类的纯虚函数之后,可以对它进行重写,在子类中被重写的纯虚函数就拥有函数体,并能正常使用了

  2. 纯虚函数只有声明,没有具体的实现。它为子类提供了一个统一的接口,具体的实现细节则由各个子类根据需要来定义。

  3. 纯虚函数的声明以必须= 0 结尾,表明该函数没有实现,它只是一个接口。

  4. 不能直接调用没有被重写的纯虚函数,因为它们没有实现。如果试图在父类中调用纯虚函数,将导致编译错误。

  5. 不能在模板类中将成员函数定义为纯虚函数,因为模板类本身并不是具体的类,而是一种生成类的蓝图。


抽象类的特点

  1. 包含至少一个纯虚函数

  2. 抽象类不能实例化出对象

  3. 抽象类通常作为基类,通过它提供一种公共的接口或模板,让子类来实现这些接口。

  4. 子类会继承父类的纯虚函数,并且可以对继承的纯虚函数进行重写,在子类中被重写的纯虚函数就拥有函数体,就和正常的虚函数一样能正常使用了

  5. 子类如果继承了父类的纯虚函数,但是没有把它们全部重写,那么子类中就也有纯虚函数了,那么子类就也是抽象类,也无法实例化出对象


抽象类的作用

主要作用是:
作为一个父类供其他类继承,它里面的函数一般都是纯虚函数,因为纯虚函数没有函数体,所以可以把纯虚函数作为纯粹的接口

其他类继承了之后
只要重写父类中的所有纯虚函数,提供具体的实现

然后借助多态对接口进行调用

class Car
{
public:virtual void Drive() = 0;
};class Benz :public Car
{
public:virtual void Drive(){cout << "Benz-舒适" << endl;}
};class BMW :public Car
{
public:virtual void Drive(){cout << "BMW-操控" << endl;}
};void Test()
{Car* pBenz = new Benz;pBenz->Drive();Car* pBMW = new BMW;pBMW->Drive();
}int main()
{Test();return 0;
}

多态的原理

虚函数指针和虚函数表

只要一个类拥有了虚函数,编译器就会为它维护一张表,这张表就是虚函数表。
虚函数表本质是一个存虚函数指针的指针数组,一般情况这个数组最后面放了一个nullptr。
这个类定义的所有虚函数的地址都存储在这张虚函数表中

拥有虚函数表的类实例化出来的对象中都会多存储一个指针,这个指针就是虚函数表指针
虚函数指针就指向虚函数表的首地址


在这里插入图片描述


子类会继承父类的虚函数表

父类如果拥有虚函数表,那么它就一定拥有虚函数
子类继承时就会把虚函数也继承下来,并且子类还会继承父类的虚函数表【继承到的是父类虚函数表的拷贝


子类的虚函数表的特点:

  1. 子类继承到的虚函数表是父类的虚函数表的拷贝,它们的首地址是不一样的,所以并非是同一张虚函数表

    在这里插入图片描述
  2. 子类如果重写了父类的虚函数,那么子类的虚函数表中与重写的虚函数对应的位置的地址,就会从父类中的虚函数的地址,改为子类重写的虚函数的地址

    在这里插入图片描述

总结一下子类的虚函数表的生成:

  1. 先将父类中的虚函数表内容拷贝一份到子类的虚函数表中

  2. 如果子类重写了父类中某个虚函数
    在子类的虚函数表中:用子类自己的虚函数的地址覆盖虚函数表中父类的虚函数的地址


多态的原理

结合上面虚函数表和虚函数指针的特点,就可以推导出多态的原理:

  1. 定义一个父类类型的指针,指向父类对象或者子类对象
  2. 根据指向的对象中存储的虚函数指针找到子类或者父类的虚函数表,再在里面找到对应函数名和参数表[可能重载]的虚函数的地址
    这样的话指向子类对象时,找到的就是子类的虚函数表
    指向父类对象时,找的就是父类的虚函数表
  3. 如果子类里的虚函数没有重写,那么虚函数表中的父类虚函数地址就没有被覆盖,调用的就还是父类的
  4. 因为子类可以重新定义自己类中的虚函数,这样就可以同一指针指向的对象不同,但调用同名的函数,得到的结果不同


在这里插入图片描述

原理图如下

在这里插入图片描述

当父类A类型的指针p指向父类A的对象时:
就可以通过指向的对象找到它里面存储的虚函数指针,再借此找到对应的虚函数表,最后直接在虚函数表里面拿出要调用的虚函数(上图中的A::func())的地址,进行调用

指向子类B的对象的时候同理


http://www.dtcms.com/wzjs/406153.html

相关文章:

  • pixso在线设计平台网站seo外包公司有哪些
  • 官方网站建设源码系统杭州搜索引擎排名
  • 济南最新疫情文件通知网站优化及推广方案
  • 国内做网站上市公司教育机构网站
  • 南磨房做网站公司seo有哪些网站
  • 九江专业制作网站小程序百度移动版
  • 深圳网站建设哪家便宜销售推广方案
  • 高古楼网站 做窗子南宁网站推广公司
  • 网站开发的流程和步骤是什么东莞seo整站优化火速
  • 新开网站做内贸业务员好做旅行网站排名
  • 做网站设计师要提供什么长沙seo霜天
  • 做设计有哪些好用的素材网站有哪些怎么可以在百度发布信息
  • 东莞商贸公司寮步网站建设价格seo快速优化文章排名
  • 制作网站给别人做诈骗的会犯什么罪江西网络推广seo
  • 工程造价信息月刊手机优化大师
  • 景安网络网站建设教程新手怎样推销自己的产品
  • 凡科免费网站建设google搜索引擎入口google
  • 网站制作方案书福州百度快速优化
  • wordpress 无法自动更新重庆seo
  • 企业网站轮播图百度关键词快速排名
  • 常州网红餐厅有哪些aso搜索优化
  • 网站建设服务费记入什么科目安徽疫情最新情况
  • 网站安全检测官网郑州手机网站建设
  • 临沂做网站网站代运营推广
  • 电脑做ppt如何插入网站谷歌seo 外贸建站
  • 重庆网站推广公司关键词排名方案
  • 搜索引擎优化管理实验报告贵港网站seo
  • 赤峰做网站公司专业恶意点击软件
  • 公司网站建设业务文案最新新闻实时新闻
  • 网页制作和设计实验目的推动防控措施持续优化