C++进阶01——示例

需求:开发一个用于四则运算的类

提供setOperator函数设置运算类型

提供setParameter函数设置运算参数

提供result函数进行运算,其返回值表示运算的合法性,通过引用参数返回结果

Operator.h

复制代码
class Operator{
private:
	char mOp;
	double mp1;
	double mp2;
public:
	bool setOperator(char op);
	void setParameter(double p1,double p2);
	bool result(double& r);		
};

Operator.cpp

复制代码
#include "Operator.h"
bool Operator ::setOperator(char op){
	bool ret=false;
	if((op=='+')||(op=='-')||(op=='*')||(op=='/')){
		ret=true;
		mOp=op;
	}
	else{
		mOp='\0';
	}
	return ret;
}
void Operator::setParameter(double p1,double p2){
	mp1=p1;
	mp2=p2;
}
bool Operator::result(double& r){
	bool ret=true;
	switch (mOp) {
		case '/':
			if(mP2==0){
				ret=false;
			}
			else{
				r=mP1/mP2;
			}
			break;
		case '+:
			r=mP1+mP2;
			//TODO
			break;
		case '-:
			r=mP1-mP2;
			//TODO
			break;
		case '*':
			r=mP1*mP2;
			//TODO
			break;
		default:
			ret=false;
			//TODO
			break;
	}
	return ret;
}

main.cpp

复制代码
#include "Operator.h"
int main(){
	Operator op;
	double r=0;
	op.setOperator('/');
	op.setParameter(9,3);
	if(op.result(r)){
		printf("r=%lf\n",r);
	}
	else{
		printf("Calculate error!\n");
	}
	return 0;
}
相关推荐
无名猿3 小时前
constexpr 能力扩张:从 C++11 到 C++20 的编译期计算
c++·性能优化·现代c++·编译期
007张三丰3 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·c语言·c++·内存管理
weixin_419658313 小时前
CANoe 使用指南:从输出窗口到数据回放的完整实战教程
开发语言·功能测试·车载系统·自动化·汽车
当青春邂逅吉米多维奇3 小时前
C#图解教程(第5版) 同步方法
开发语言·c#
骇客野人3 小时前
Java BIO / NIO / AIO 完整详解 + 编程技巧
java·开发语言·nio
霸道流氓气质3 小时前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
波力海苔夹心脆6754 小时前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
外收内放4 小时前
Python基础语法练习题(62原始版本及其优化版本)
开发语言·python
马剑威(威哥爱编程)4 小时前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端
三月微暖寻春笋4 小时前
【和春笋一起学C++】(七十二)类模板
开发语言·c++·实例·类模板·使用类模板·数组模板