IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C++多态实现简单计算机类 -> 正文阅读

[C++知识库]C++多态实现简单计算机类

C++多态实现简单计算机类

普通写法实现计算器类

//普通写法
#include<iostream>
#include<string>
using namespace std;

class Calculator
{
public:

	int  getResult(string oper)
	{
		if (oper == "+")
		{
			return m_Num1 + m_Num2;
		}
		else if (oper == "-")
		{
			return m_Num1 - m_Num2;
		}
		else if (oper == "*")
		{
			return m_Num1 * m_Num2;
		}
		else if (oper == "/")
		{
			return m_Num1 / m_Num2;
		}
	}
	
	int m_Num1;//操作数1
	int m_Num2;//操作数2
};

//测试案例一
void test01()
{
    //创建一个计算机对象
	Calculator c;
	c.m_Num1 = 10;
	c.m_Num2 = 10;
    
    //四则运算输出
	cout << c.m_Num1 << "+" << c.m_Num2 << "=" << c.getResult("+") << endl;
	cout << c.m_Num1 << "-" << c.m_Num2 << "=" << c.getResult("-") << endl;
	cout << c.m_Num1 << "*" << c.m_Num2 << "=" << c.getResult("*") << endl;
	cout << c.m_Num1 << "/" << c.m_Num2 << "=" << c.getResult("/") << endl;
}

int main()
{
    //调用测试案例一
	test01();
	
	system("pause");
	return 0;
}

普通方法实现计算机类的利弊:

  • 优点:
    1.代码量比较少
    2.初学者很容易想到的方法(也不一定)
  • 缺点:
    1.想要拓展新功能时,需要修改源码
    2.无法实现“开闭原则”
    (开闭原则:对拓展进行开放,对修改进行关闭。)

所以,在遇到实际问题时,一般用多态方法,实现“开闭原则”。

多态方法实现计算器类

#include<iostream>
#include<string>
using namespace std;

//实现计算器的抽象类
class AbstractCalculator
{
public:
    //构建虚函数
	virtual int getResult()
	{
		return 0;
	}
	
	//也可以构建纯虚函数
    //virtual int getResult() = 0;
    
	int m_Num1;//操作数1
	int m_Num2;//操作数2
};

//加法计算器类
class AddCalculator:public AbstractCalculator
{
public:
	int getResult()
	{
		return m_Num1 + m_Num2;
	}
};

//减法计算器类
class SubCalculator :public AbstractCalculator
{
public:
	int getResult()
	{
		return m_Num1 - m_Num2;
	}
};

//乘法计算器类
class MulCakculator :public AbstractCalculator
{
public:
	int getResult()
	{
		return m_Num1 * m_Num2;
	}
};

//偷个懒,不写除法了

//测试案例二
void test02()
{
    //多态使用条件:
    //父类指针或者引用指向子类对象

    //加法运算
	AbstractCalculator* p = new AddCalculator;
	p->m_Num1 = 100;
	p->m_Num2 = 100;
	
	cout << p->m_Num1 << "+" << p->m_Num2 << "=" << p->getResult() << endl;
	//堆区数据用完后记得销毁
	delete p;

    //减法运算
	p = new SubCalculator;
	p->m_Num1 = 100;
	p->m_Num2 = 100;
	
	cout << p->m_Num1 << "-" << p->m_Num2 << "=" << p->getResult() << endl;
	delete p;

    //乘法运算
	p = new MulCakculator;
	p->m_Num1 = 100;
	p->m_Num2 = 100;
	
	cout << p->m_Num1 << "*" << p->m_Num2 << "=" << p->getResult() << endl;
	delete p;
}

int main()
{
    //调用测试案例二
	test02();

	system("pause");
	return 0;
}

多态方法实现计算机类的利弊:

  • 优点:
    1.组织结构清晰
    2.可读性强
    3.对于前期和后期的拓展以及维护性高
    4.装逼(狗头)
  • 缺点:
    1.代码量变大了(但是代码一行一块钱(狗头))
    2.敲代码敲得手累(狗头)

总结

C++开发提倡利用多态设计程序架构,因为多态优点很多

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-31 16:26:28  更:2021-07-31 16:29:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/1 15:35:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码