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

怎么做企业网站一级悬浮菜单wordpress wp unslash

怎么做企业网站一级悬浮菜单,wordpress wp unslash,个人网站模板html下载,网页无法访问此页面4.7、多态 4.7.1、多态的基本概念 多态是C面向对象三大特征之一 多态分为两类 静态多态#xff1a;函数重载和运算符重载属于静态多态#xff0c;复用函数名动态多态#xff1a;派生类和虚函数实现运行时多态 静态多态和动态多态区别#xff1a; 静态多态的函数地址早…4.7、多态 4.7.1、多态的基本概念 多态是C面向对象三大特征之一 多态分为两类 静态多态函数重载和运算符重载属于静态多态复用函数名动态多态派生类和虚函数实现运行时多态 静态多态和动态多态区别 静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址 动态多态满足条件 有继承关系子类重写父类的虚函数 动态多态使用 父类的指针或引用 指向子类对象 重写函数返回值类型 函数名 参数列表 完全一致称为重写 class Animal { public://虚函数virtual void spreak() {cout 动物在说话 endl; } };class Cat :public Animal { public:void spreak() {cout 猫在说话 endl;} };class Dog : public Animal { public:void spreak() {cout 狗在说话 endl;} };//执行说话的函数 //地址早绑定 在编译阶段确定函数地址 //如果想让猫说话就不能提前绑定云瑶在运行阶段绑定及地址晚绑定 void doSpreak(Animal animal) {animal.spreak(); }void test01() {Cat cat;doSpreak(cat);Dog dog;doSpreak(dog); }4.7.2、多态案例-计算器类 多态的优点 代码组织结构清晰可读性强利于前期和后期扩展以及维护 //实现计算机的抽象类 class AbstractCalculator { public:virtual int getResult() {return 0;}int m_Num1,m_Num2; };//减法计算机类 class SubCalculator :public AbstractCalculator { public:int getResult() {return m_Num1 - m_Num2;} }; //加法计算机类 class AddCalculator :public AbstractCalculator { public:int getResult() {return m_Num1 m_Num2;} };void test01() {AbstractCalculator *a1 new AddCalculator;a1-m_Num1 100;a1-m_Num2 200;cout a1-m_Num1 a1-m_Num2 a1-getResult() endl;//回收a1delete a1;a1 new SubCalculator();a1-m_Num1 200;a1-m_Num2 100;cout a1-m_Num1 - a1-m_Num2 a1-getResult() endl;//回收a1delete a1; }4.7.3、纯虚函数和抽象类 在多态中通常父类中虚函数的实现是毫无意义的主要都是效用子类重写的内容 因此可以将虚函数改为纯虚函数 纯虚函数语法virtual 返回值类型 函数名 参数列表 0; 当类中有了纯虚函数这个类也称为抽象类 抽象类特点: 无法实例化对象子类必须重写抽象类中的纯虚函数否则也属于抽象类 //纯虚函数和抽象类 class Base { public:virtual void func() 0; };//1、纯虚函数无法实例对象 //void test01() { // Base b; // new Base; //}//2、子类必须重写抽象类中的纯虚函数否则也属于抽象类 //class Son : public Base { //public: // //}; // //void test02() { // Son s; //}//3、正确写法 class Son : public Base { public:virtual void func() {cout func函数被调用 endl;}; };void test03() {Base* base new Son;base-func(); }4.7.4、多态案例二 - 制作饮品 案例描述 制作饮品时大致的流程为 煮水 - 冲泡 - 导入杯中 - 加入辅料 利用多态技术实现本案例提供抽象制作饮品基类提供子类制作咖啡喝茶叶 //饮品抽象类 class MakeDreak { public:virtual void Boil() 0;virtual void Rush() 0;virtual void Fall() 0;virtual void Add() 0;void markDrink() {Boil();Rush();Fall();Add();}; };class Coffee : public MakeDreak {virtual void Boil() {cout 煮水 endl;}virtual void Rush() {cout 冲泡咖啡 endl;}virtual void Fall() {cout 倒入杯中 endl;}virtual void Add() {cout 加糖和牛奶 endl;} };class Tea : public MakeDreak {virtual void Boil() {cout 煮水 endl;}virtual void Rush() {cout 冲泡茶叶 endl;}virtual void Fall() {cout 倒入杯中 endl;}virtual void Add() {cout 柠檬 endl;} };//制作函数 void doWork(MakeDreak* abs) {abs-markDrink(); }void test01() {doWork(new Coffee);cout ----------------- endl;doWork(new Tea); }4.7.5、虚析构和纯虚析构 多态使用时如果子类中有属性开辟到堆区那么父类指针在释放时无法调用到子类的析构代码 解决方法将父类中的析构函数改为虚析构或者纯虚析构 虚析构和纯虚析构共性 可以解决父类指针释放子类对象都需要有具体的函数实现 虚析构和纯虚析构区别 如果是纯虚析构该类属于抽象类无法实例化对象 虚析构语法 virtual ~类名(){} 纯虚析构语法 virtual ~类名() 0 类名::~类名(){} class Animal { public:Animal() {cout Animal构造函数被调用 endl;}//利用虚析构可以解决 父类指针释放子类对象virtual ~Animal(){cout Animal析构函数被调用 endl;}//纯虚函数virtual void spreak() 0;};class Cat : public Animal { public:Cat(string name) {cout Cat构造函数调用 endl;m_Name new string(name);}virtual void spreak() {cout *m_Name猫正在说话 endl;}~Cat(){if (m_Name !NULL){cout Cat析构函数调用 endl;delete m_Name;m_Name NULL;}}string *m_Name; };void test01() {Animal* animal new Cat(Tom);animal-spreak();//父类指针在析构时候不会调用子类中析构函数//导致子类如果有堆区属性出现内存泄露delete animal; }4.7.6、多态案例三 - 电脑组装 案例描述: 电脑主要组成部件为CPU (用于计算)显卡(用于显示)内存条(用于存储)将每个零件封装出抽象基类并且提供不同的厂商生产不同的零件例如Inter厂商和Lenovo厂商创建电脑类提供让电脑工作的函数并且调用每个零件工作的接口 测试时组装三台不同的电脑进行工作 //cpu类 class CPU { public://抽象的计算机函数virtual void caculate() 0; };//显卡类 class Graphics { public://抽象的显卡virtual void show() 0; };//内存类 class RAM { public:virtual void save() 0; };class Computer { public:Computer(CPU* cpu, Graphics* gpu, RAM* ram) {m_cpu cpu;m_gpu gpu;m_ram ram;}void work() {m_cpu-caculate();m_gpu-show();m_ram-save();}//提供析构函数 释放3个电脑零件~Computer(){//释放cpuif (m_cpu!NULL){delete m_cpu;m_cpu NULL;}//释放显卡if (m_gpu !NULL){delete m_gpu;m_gpu NULL;}//释放内存条if (m_ram !NULL){delete m_ram;m_ram NULL;}} private:CPU* m_cpu; //CPU的零件指针Graphics* m_gpu;RAM* m_ram; };//Intel厂商 class IntelCPU : public CPU { public:virtual void caculate() {cout Intel的CPU开始计算了 endl;} }; class IntelGPU : public Graphics { public:virtual void show() {cout Intel的GPU开始显示了 endl;} }; class IntelRAM : public RAM { public:virtual void save() {cout Intel的RAM开始存储了 endl;} };//Lenovo厂商 class LenovoCPU : public CPU { public:virtual void caculate() {cout AMD的CPU开始计算了 endl;} }; class LenovoGPU : public Graphics { public:virtual void show() {cout AMD的GPU开始显示了 endl;} }; class LenovoRAM : public RAM { public:virtual void save() {cout AMD的RAM开始存储了 endl;} };void test01() {//第一台电脑零件CPU * intelCpu new IntelCPU;Graphics * IntelGpu new IntelGPU;RAM * IntelRam new IntelRAM;//创建第一台电脑cout 第一台电脑开始工作 endl;Computer * computer1 new Computer(intelCpu, IntelGpu, IntelRam);computer1-work();delete computer1;//第二台电脑cout --------------------- endl;cout 第二台电脑开始工作 endl;Computer* computer2 new Computer(new LenovoCPU, new LenovoGPU, new LenovoRAM);computer2-work();delete computer2;//第三台电脑cout --------------------- endl;cout 第三台电脑开始工作 endl;Computer* computer3 new Computer(new LenovoCPU, new IntelGPU, new LenovoRAM);computer3-work();delete computer3;}
http://www.huolong8.cn/news/266283/

相关文章:

  • 网站建设中端口号的作用是什么意思产品网站怎样做外部链接
  • 济南制作网站制作公司策划腾讯云快速搭建网站
  • 响应式网站有哪些2017中天建设集团有限公司营业执照
  • 北京微网站设计制作服务一个做二维码问卷调查的网站
  • 工程建设含义邢台视频优化方案
  • 网站开发算是固定资产吗一个网站的建设流程图
  • 旅游网站建设服务对象制作网站要花多少钱如何
  • 贵州公司网站开发做寂网站
  • 俞润装饰做哪几个网站小程序商城哪家好又便宜
  • 网站怎么更改域名解析优秀广告设计案例作品欣赏
  • 做封面图的网站外链推广平台
  • 四川建设网网站php在线编辑器
  • 企业网站的类型包括互联网 网站设计
  • 搜索引擎网站入口黄骅港信息贴吧
  • 新手学网页设计的网站百度收录网址提交
  • 做解决方案的网站做黑彩网站能赚钱吗
  • 红岗网站建设汕头市城市建设开发总公司
  • php语言做购物网站wordpress自定义文章类型如何调用
  • 手机黄页怎么找宁波网站优化公司哪家好
  • 无锡做网站公司哪家比较好四川网上注册公司流程
  • 想要做一个网站wordpress无法创建页面
  • 四川建设设计公司网站wordpress sensei
  • 网站维护能自己做吗163企业邮箱免费
  • 网站建设的软件叫啥在线网站建设联系人
  • 无域名网站 能否被百度h5游戏是什么意思
  • 东莞公司网站制作公司wordpress修改注册表
  • 长沙岳麓区网站建设章丘建设网站
  • 摄影瀑布流网站模板网页制作步骤
  • 小程序推广网站wordpress对接公众号源码
  • 龙岩网站建设的软件阿里巴巴国际站网页版