c++多态案例 落日映苍穹つ 2022-09-11 05:14 204阅读 0赞 ### c++多态案例 ### * 案例1 * * 普通方式写计算器类 * 多态方式写计算器类 * 案例2 * * 制作饮品 * 总结 # 案例1 # ## 普通方式写计算器类 ## #include <iostream> #include<string> using namespace std; //普通方式写计算器 class calculator { public: calculator(int n1,int n2); int getResult(string str) { if (str == "+") { return num1 + num2; } else if (str == "-") { return num1 - num2; } else if (str == "*") { return num1 * num2; } } public: int num1; int num2; }; calculator::calculator(int n1, int n2) { num1 = n1; num2 = n2; } void test01() { calculator cl(10,10); cl.getResult("+"); cout << cl.num1 << "+" << cl.num2 << "=" << cl.getResult("+") << endl; cout << cl.num1 << "-" << cl.num2 << "=" << cl.getResult("-") << endl; cout << cl.num1 << "*" << cl.num2 << "=" << cl.getResult("*") << endl; } int main() { test01(); // std::cout << "Hello World!\n"; } ## 多态方式写计算器类 ## // ConsoleApplication5.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include<string> using namespace std; //采用多态的方式写计算器类 class calculatorBase { public: virtual int getResult() { return 0; } public: int num1; int num2; }; //加法计算器类 class addCalculator:public calculatorBase { public: //重写父类虚函数 int getResult() { return num1 + num2; } }; //减法法计算器类 class SubCalculator :public calculatorBase { public: //重写父类虚函数 int getResult() { return num1 -num2; } }; //乘法法计算器类 class MulCalculator :public calculatorBase { public: //重写父类虚函数 int getResult() { return num1 *num2; } }; void test02() { //父类指针或者引用指向子类对象 calculatorBase* p = new addCalculator; p->num1 = 10; p->num2 = 10; cout << p->num1 << "+" << p->num2 << "=" << p->getResult() << endl; //用完销毁 delete p; //减法运算 p = new SubCalculator; p->num1 = 100; p->num2 = 100; cout << p->num1 << "-" << p->num2 << "=" << p->getResult() << endl; delete p; //乘法运算 p = new MulCalculator; p->num1 = 20; p->num2 = 20; cout << p->num1 << "*" << p->num2 << "=" << p->getResult() << endl; } int main() { //test01(); test02(); // std::cout << "Hello World!\n"; } # 案例2 # ## 制作饮品 ## # 总结 # 1. 多态的使用条件为 父类使用指针或者引用的方式指向子类对象 2. 动态多态:首先需要有继承,其中 父类中有虚函数,最后子类重写父类的虚函数。 3. 多态的底层实现就是,使用虚函数后,在父类中储存的是vfptr指针,其指向了vftable(虚函数表),虚函数表存的是虚函数的地址,子类在继承的会将vfptr指针复制过来,当子类重写父类虚函数的时候,会将虚函数表中的地址覆盖,储存子类虚函数地址。
相关 c++多态 class Parent \{ public: virtual void fun() \{ cout << "Parent" << endl; \} 怼烎@/ 2024年02月17日 20:52/ 0 赞/ 125 阅读
相关 C++ 多态 C++ 多态 一、多态性 1、多态性的定义 2、多态性的分类及实现方式 3、动态多态的作用 4、虚函数的注意事 拼搏现实的明天。/ 2023年07月24日 08:03/ 0 赞/ 80 阅读
相关 C++多态 [浅谈C++多态性][C] [虚函数和纯虚函数的区别][Link 1] [虚函数][Link 2] [C++虚函 我就是我/ 2022年09月24日 12:25/ 0 赞/ 290 阅读
相关 c++多态案例 c++多态案例 案例1 普通方式写计算器类 多态方式写计算器类 案例2 制作饮品 总结 案例1 普通方式 落日映苍穹つ/ 2022年09月11日 05:14/ 0 赞/ 205 阅读
相关 【C#】 多态 多态是面向对象编程中三大机制之一,其原理建立在"从父类继承而来的子类可以转换为其父类"这个规则之上,换句话说,能用父类的地方,就能用该类的子类.当从父类派生了很多子 深碍√TFBOYSˉ_/ 2022年08月18日 15:24/ 0 赞/ 244 阅读
相关 C++多态 多态意思是”多种形态“。多态性是面向对象编程的关键思想。 C++通过以下方式支持多态 (1)经由一组隐式的转化操作。例如把一个派生类的指针转化为一个指向公共基类的指针 £神魔★判官ぃ/ 2022年08月06日 01:17/ 0 赞/ 289 阅读
相关 【c++】多态 多态 多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。 C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执 男娘i/ 2022年07月11日 13:13/ 0 赞/ 272 阅读
相关 C#(多态) 1: 在C\语言中,重载和重写的区别 (1)重写: 重写是子类的方法覆盖父类的方法,要求方法名和参数都相同 (2)重载:重载是在同一个类中的 偏执的太偏执、/ 2021年12月11日 03:11/ 0 赞/ 325 阅读
相关 C++多态 C++多态 多态概念 字面意思,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 举个例子:假如你要去看电影,有的影院也许有这样的规定 我不是女神ヾ/ 2021年11月27日 06:52/ 0 赞/ 402 阅读
还没有评论,来说两句吧...