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

昆明网站排名优化公司中央电视台新闻联播

昆明网站排名优化公司,中央电视台新闻联播,外链是什么意思,网页制作那家好1.前置知识点 多态是面向对象的三大特性之一 多态分为两类 静态多态:函数重载和运算符重载都属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态 静态多态和动态多态的区别 静态多态的函数地址早绑定-----编译阶段确定函数地…

1.前置知识点

多态是面向对象的三大特性之一
多态分为两类

  • 静态多态:函数重载运算符重载都属于静态多态,复用函数名
  • 动态多态:派生类虚函数实现运行时多态

静态多态和动态多态的区别

  • 静态多态的函数地址早绑定-----编译阶段确定函数地址
  • 动态多态的函数地址晚绑定-----运行阶段确定函数地址

动态多态必须满足的条件

  1. 有继承关系
  2. 子类重写父类的虚函数

1.1多态使用:

父类指针或者引用指向子类对象

1.2 重写概念

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

1.3 多态的好处

  • 1.组织结构清晰
  • 2.可读性比较强
  • 3.对于前期和后期的扩展和维护性比较高

1.4 测试案例

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

#include<iostream>
using namespace std;//子类可以转父类,父类不能转子类
//动物类
class Animal {public:void speak(){cout << "动物在说话" << endl;}};//猫类
class Cat :public Animal {
public:void speak(){cout << "猫在说话" << endl;}};//执行说话的函数
//地址早绑定,在编译阶段就确定了函数地址
void doSpeak(Animal &animal)//Animal &animal=cat
{animal.speak();}void test01()
{Cat cat;doSpeak(cat);}//分别利用普通写法和多态技术实现计算器
//普通写法class Calculator
int main()
{test01();system("pause");return 0;}

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

#include<iostream>
using namespace std;//子类可以转父类,父类不能转子类
//动物类
class Animal {public:virtual void speak(){cout << "动物在说话" << endl;}};//猫类
class Cat :public Animal {
public:void speak(){cout << "猫在说话" << endl;}};//执行说话的函数
//地址早绑定,在编译阶段就确定了函数地址
void doSpeak(Animal &animal)//Animal &animal=cat
{animal.speak();}void test01()
{Cat cat;doSpeak(cat);}//分别利用普通写法和多态技术实现计算器
//普通写法class Calculator
int main()
{test01();system("pause");return 0;}

结果

在这里插入图片描述

2. 设计实现两个操作数进行运算的计算器类

案例描述:
分别利用普通写法和多态技术,设计实现两个操作数进行运算的计算器类
多态的优点:

  • 代码组织结构清晰
  • 可读性强
  • 利于前期和后期的扩展以及维护

对比传统写法和使用多态

  • 在真实开发中,提倡开闭原则
  • 开闭原则:对扩展进行开放,对修改进行关闭

2.1传统写法

#include<iostream>
#include<string>
using namespace std;//子类可以转父类,父类不能转子类
//动物类
//class Animal {
//
//public:
//	virtual void speak()
//	{
//	
//		cout << "动物在说话" << endl;
//	
//	}
//
//};
//
//
猫类
//class Cat :public Animal {
//public:
//	virtual void speak()
//	{
//		cout << "猫在说话" << endl;
//	}
//
//};
//
执行说话的函数
地址早绑定,在编译阶段就确定了函数地址
//void doSpeak(Animal &animal)//Animal &animal=cat
//{
//
//	animal.speak();
//
//}
//
//
//void test01()
//{
//	Cat cat;
//	doSpeak(cat);
//
//
//
//}//多态的好处
//1.组织结构清晰
//2.可读性比较强
//3.对于前期和后期的扩展和维护性比较高//分别利用普通写法和多态技术实现计算器
//普通写法class Calculator---不利于维护
class Calculator
{//实现两个操作数运算
public:int getResult(string opt)//传入操作符{if (opt == "+"){return m_Num1 + m_Num2;}else if (opt == "-"){return m_Num1 - m_Num2;}else if (opt == "*"){return m_Num1 * m_Num2;}}int  m_Num1;int  m_Num2;};//测试案例void test01()
{//创建计算器对象Calculator c;c.m_Num1 = 10;c.m_Num2 = 20;cout << c.m_Num1 << "+" << c.m_Num2 <<"="<< c.getResult("+") << endl;}int main()
{test01();system("pause");return 0;}

2.2 使用多态实现计算器类

#include<iostream>
#include<string>
using namespace std;//子类可以转父类,父类不能转子类
//动物类
//class Animal {
//
//public:
//	virtual void speak()
//	{
//	
//		cout << "动物在说话" << endl;
//	
//	}
//
//};
//
//
猫类
//class Cat :public Animal {
//public:
//	virtual void speak()
//	{
//		cout << "猫在说话" << endl;
//	}
//
//};
//
执行说话的函数
地址早绑定,在编译阶段就确定了函数地址
//void doSpeak(Animal &animal)//Animal &animal=cat
//{
//
//	animal.speak();
//
//}
//
//
//void test01()
//{
//	Cat cat;
//	doSpeak(cat);
//
//
//
//}//多态的好处
//1.组织结构清晰
//2.可读性比较强
//3.对于前期和后期的扩展和维护性比较高//分别利用普通写法和多态技术实现计算器
//普通写法class Calculator
class Calculator
{//实现两个操作数运算
public:int getResult(string opt)//传入操作符{if (opt == "+"){return m_Num1 + m_Num2;}else if (opt == "-"){return m_Num1 - m_Num2;}else if (opt == "*"){return m_Num1 * m_Num2;}return -1;}int  m_Num1;int  m_Num2;};//测试案例void test01()
{//创建计算器对象Calculator c;c.m_Num1 = 10;c.m_Num2 = 20;cout << c.m_Num1 << "+" << c.m_Num2 << "=" << c.getResult("+") << endl;}//利用多态实现计算器
//实现计算器抽象类
class AbstractCalculator {public:int m_Num1;int m_Num2;virtual int getResult()//在父类虚函数中不实现任何功能{return 0;}};//设计加法计算器类
class AddCalculator :public AbstractCalculator
{public:virtual int getResult()//在父类虚函数中不实现任何功能{return m_Num1 + m_Num2;}};
//设计减法计算器类class SubCalculator :public AbstractCalculator
{public:virtual int getResult()//在父类虚函数中不实现任何功能{return m_Num1 - m_Num2;}};//设计乘法计算器类
class MultCalculator :public AbstractCalculator
{public:virtual int getResult()//在父类虚函数中不实现任何功能{return m_Num1 * m_Num2;}};void test02()
{//多态使用条件//父类指针或者引用指向子类的对象//1.加法运算AbstractCalculator *ptr = new AddCalculator;//C++无参构造可以省略()ptr->m_Num1 = 10;ptr->m_Num2 = 200;cout << ptr->m_Num1 << "+" << ptr->m_Num2 << "=" << ptr->getResult() << endl;delete ptr;//释放堆区数据//2.减法运算ptr = new SubCalculator;ptr->m_Num1 = 10;ptr->m_Num2 = 200;cout << ptr->m_Num1 << "-" << ptr->m_Num2 << "=" << ptr->getResult() << endl;delete ptr;//释放数据//3.乘法运算ptr = new  MultCalculator;ptr->m_Num1 = 100;ptr->m_Num2 = 200;cout << ptr->m_Num1 << "*" << ptr->m_Num2 << "=" << ptr->getResult() << endl;delete ptr;//释放数据}int main()
{//test01();test02();system("pause");return 0;}

结果

在这里插入图片描述

http://www.ds6.com.cn/news/60983.html

相关文章:

  • wordpress 语言设置中文南沙seo培训
  • 一站式网站建设方案计算机培训短期速成班
  • 网站怎么做来卖东西福建seo顾问
  • 做网站公司工资淘宝网页版
  • 宜章网站建设百度浏览器下载安装
  • 那些网站反爬做的好口碑营销方案怎么写
  • 西安专业网站建设公司seo推广seo技术培训
  • 广州网站开发制作seo引擎优化是什么
  • 网站上的链接怎么做的线上推广活动有哪些
  • 平面设计师磨刀石百度快速seo优化
  • 网站被做镜像什么意思可以全部免费观看的软件
  • 免费创一个网站活动推广文案
  • 网站建设公司怎么盈利保定百度seo排名
  • 企业网站开发协议seo排名教程
  • 男女做那个视频网站湖南seo推广多少钱
  • 永久免费的网站软件杭州今天查出多少阳性
  • 江门网百度seo在线优化
  • 免费个人简历武汉久都seo
  • 用tomcat做网站目录长沙百度搜索排名优化
  • 网站建设服务器端软件鹤壁网站推广公司
  • 网页设计实训总结结尾seo顾问咨询
  • 企业网站备案容易吗湖南seo优化服务
  • 第一次做网站选多大空间什么叫网络市场营销
  • 没有备案的网站百度不收录免费网络营销软件
  • 如何给网站加关键词怎么做营销
  • 广东省交通建设监理检测协会网站腾讯推广平台
  • 手机网站建设新闻网站注册账号
  • 电商网站建设分析搜索网排名
  • 怎么自己做网站的推广快速网站seo效果
  • 如何设置网站标题建站公司