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

学生做网站作品图片张家港seo建站

学生做网站作品图片,张家港seo建站,wordpress 禁止右键,正规建网站公司一、多态的基本语法 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运…

一、多态的基本语法

多态分为两类

静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名

动态多态: 派生类和虚函数实现运行时多态

静态多态和动态多态区别:

静态多态的函数地址早绑定 - 编译阶段确定函数地址

动态多态的函数地址晚绑定 - 运行阶段确定函数地址

#include<iostream>
using namespace std;//多态//动物类
class Animal
{
public://虚函数virtual void speak()//void speak(){cout << "动物在说话" << endl;}
};//猫类
class Cat :public Animal
{
public://重写:函数返回值类型 函数名 参数列表 完全相同称为重写void speak()//子类重写时,前面virtual可写可不写{cout << "小猫在说话" << endl;}
};//狗类
class Dog :public Animal
{
public:void speak(){cout << "小狗在说话" << endl;}
};//执行说话的函数
//地址早绑定	在编译阶段确定函数地址
//如果想执行让猫会说话,那么这个函数地址就不能提前绑定,需要在运行阶段进行绑定,地址晚绑定
//在动物类speak函数前加virtual//动态多态满足条件
//1.有继承关系
//2.子类重写父类的虚函数//动态多态使用
//父类的指针或者引用指向子类对象void doSpeak(Animal &animal)	//Animal &animal = cat
{animal.speak();
}void test1()
{Cat cat;doSpeak(cat);//out:动物在说话 加上virtual之后out:小猫在说话Dog dog;doSpeak(dog);//out:小狗在说话
}int main()
{test1();return 0;
}

总结:

多态满足条件:

1.有继承关系

2.子类重写父类中的虚函数

多态使用条件: 父类指针或引用指向子类对象

重写:函数返回值类型 函数名 参数列表 完全一致称为重写

二、多态的原理剖析

1.未发生重写时,则为继承,把父类中的所有内容都继承一份

2.发生重写时 ,子类中的虚函数表内部会替换成子类的虚函数地址

多态原理:由于写了一个虚函数,类的内部发生改变,多了一个虚函数(表)指针指向虚函数表,表的内部写的是虚函数的函数入口地址,当子类重写虚函数时,会把自身的虚函数表中的函数替换掉,替换成子类的函数,当用父类的引用指向子类对象时(上图右下角部分),由于本身创建的时Cat/Dog的子类对象,所以调用公共的speak接口时,会从子类找函数入口地址,确定什么就(Cat/Dog)输出什么(Cat/Dog).

代码部分:(只增加了一个测试函数 )

#include<iostream>
using namespace std;//多态//动物类
class Animal
{
public://虚函数virtual void speak()//void speak(){cout << "动物在说话" << endl;}
};//猫类
class Cat :public Animal
{
public://重写:函数返回值类型 函数名 参数列表 完全相同称为重写void speak()//子类重写时,前面virtual可写可不写{cout << "小猫在说话" << endl;}
};//狗类
class Dog :public Animal
{
public:void speak(){cout << "小狗在说话" << endl;}
};//执行说话的函数
//地址早绑定	在编译阶段确定函数地址
//如果想执行让猫会说话,那么这个函数地址就不能提前绑定,需要在运行阶段进行绑定,地址晚绑定
//在动物类speak函数前加virtual//动态多态满足条件
//1.有继承关系
//2.子类重写父类的虚函数//动态多态使用
//父类的指针或者引用指向子类对象void doSpeak(Animal &animal)	//Animal &animal = cat
{animal.speak();
}void test1()
{Cat cat;doSpeak(cat);//out:动物在说话 加上virtual之后out:小猫在说话Dog dog;doSpeak(dog);//out:小狗在说话
}void test2()
{cout << "sizeof Animal = " << sizeof(Animal) << endl;//未加virtual:1,加上virtual:4
}int main()
{//test1();test2();return 0;
}

http://www.dt0577.cn/news/24779.html

相关文章:

  • 专做国外商品的网站sem竞价托管价格
  • 网站必须要备案吗线上推广平台报价
  • 网站后台管理员做链接郑州网站优化seo
  • 基本型电商网站举例互联网的推广
  • 大良企业网站建设制作网页模板
  • 上海网站设计推荐刻品牌营销包括哪些内容
  • 韩国b2c电商网站微商引流被加方法精准客源
  • 下载河北人社网appseo教育培训机构
  • 营销网站建设服务百度seo高级优化
  • 网站建设立项ppt大数据精准营销的策略
  • 公司网站建app网络推广外包代理
  • 网站wordpress主题seo视频教程百度云
  • 网站模板怎么用搜索排名广告营销
  • 开放平台供稿人计划工具站seo
  • 南昌建站方案免费的推广引流软件
  • 封面型网站怎么做的优化大师的功能有哪些
  • 代做网站在哪找活seo chinaz
  • wordpress教程阿里云seo实战密码在线阅读
  • 住房城市建设网站在线网络培训平台
  • 黄浦区seo网站建设网站推广服务外包
  • 桂林分销网站开发西安seo网站建设
  • 有没有做链接的网站吗百度关键词排名批量查询
  • 模型下载网站开发流程今天宣布疫情最新消息
  • 与客户沟通网站建设的技巧网站排名查询工具
  • 个人做电子商务网站备案永州网站seo
  • 开发 网站 沈阳市场调研
  • 学校网站 cms百度爱采购服务商查询
  • 如何建设自己的公司网站百度竞价开户费用
  • 哈尔滨网站制作推广百度快照怎么打开
  • wordpress网站用户注册免费开源代码网站