Complex类的设计与改进

Complex类
源码
#include <cmath>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
class Complex
{
private:
double real, imaginary;
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i){};
Complex(const Complex &c);
void add(const Complex m);
void show();
double mod();
};
Complex::Complex(const Complex &c)
{
real = c.real;
imaginary = c.imaginary;
}
void Complex::add(const Complex m)
{
real += m.real;
imaginary += m.imaginary;
}
void Complex::show()
{
cout << real << std::showpos << imaginary << "i" << std::noshowpos << endl;
}
double Complex::mod()
{
return sqrt(real * real + imaginary * imaginary);
}
int main()
{
Complex c1(3, 5);
Complex c2 = 4.5;
Complex c3(c1);
c1.add(c2);
c1.show();
cout << c1.mod();
return 0;
}
运行截图

按照要求写出的Comloex类有点问题,add函数的设计不合理。
改进
源码
#include <cmath>
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
class Complex
{
private:
double real, imaginary;
public:
Complex(double r = 0.0, double i = 0.0) : real(r), imaginary(i){};
Complex(const Complex &c);
Complex add(const Complex m);
void show();
double mod();
};
Complex::Complex(const Complex &c)
{
real = c.real;
imaginary = c.imaginary;
}
Complex Complex::add(const Complex m)
{
Complex a;
a.real = real+m.real;
a.imaginary = imaginary+m.imaginary;
return a;
}
void Complex::show()
{
cout << real << std::showpos << imaginary << "i" << std::noshowpos << endl;
}
double Complex::mod()
{
return sqrt(real * real + imaginary * imaginary);
}
int main()
{
Complex c1(3, 5);
Complex c2 = 4.5;
Complex c3(c1);
c1 = c1.add(c2);
c1.show();
cout << c1.mod();
cin.get();
return 0;
}
像这样把结果return回来才比较好。
感想
无
Complex类的设计与改进的更多相关文章
- complex类的设计实现
#include <iostream> #include <cmath> using namespace std; class Complex{ ,); Complex(Com ...
- 设计、定义并实现Complex类
设计.定义并实现Complex类 #include <iostream> #include <cmath> using namespace std; class MyCompl ...
- C++之不带指针类的设计——Boolean
经典的类设计分类 带指针类 不带指针类 Header文件的布局 #ifndef __COMPLEX__ #define __COMPLEX__ #include <iostream.h> ...
- Unity3D 游戏开发构架篇 ——角色类的设计与持久化
在游戏开发中,游戏角色占了很大的篇幅,可以说游戏中所有的内容都是由主角所带动.这里就介绍一下角色类的设计和持久化. 一.角色类应用场景和设计思想 游戏中的角色类型不一而足,有不同的技能,有不同的属性等 ...
- “乐”动人心--2017年10款最佳音乐类APP设计盘点
在上下班的路上,听几首自己喜欢的音乐来打发无聊的等公交车和地铁的时间是现代年轻人的常态.音乐作为最能鼓动人心的"语言",也成为了人们在互联网生活里占比例最高的消费活动之一,一款好看 ...
- Java SE 之 数据库操作工具类(DBUtil)设计
JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...
- 学员会诊之02:SVN协作以及Page类的设计
三层架构的学生管理系统是我们第一个稍微大型的项目:分层.一个解决方案多个Project,所以值得我们停下来好好审查审查. 1.测试SVN服务器地址 我们的作业要求学员创建自己的SVN服务器,并且将代码 ...
- 课堂练习Complex类
Complex类 #include<iostream> #include<cmath> using namespace std; class Complex { public: ...
- Date类为什么设计为可变的,而不是像String一样?
首先,不得不承认,这确实是类库设计的一个错误,所以"为什么"进行了这个错误设计并没有意义.但没有事物一诞生就是完美的,我们的Java只是反应的慢了一点,再慢了一点. 更何况,Dat ...
随机推荐
- 代码块: 以冒号作为开始,用缩进来划分作用域,这个整体叫做代码块,python的代码块可以提升整体的整齐度,提高开发效率
# ### 代码块: 以冒号作为开始,用缩进来划分作用域,这个整体叫做代码块 if 5 == 5: print(1) print(2) if True: print(3) print(4) if Fa ...
- service order
1: SRVO Service Order compress: 本地部署,客户能够看到后台代码,transaction type,改代码等. SVO1 Service Order ...
- 学习了clipboard复制剪切插件的使用
第一步:引入clipboard插件JS <script src="dist/clipboard.min.js"></script> 第二步:在HTML代码加 ...
- 真正可用的安卓webview html图片上传限制突破处理(拍照+相册都可以用)
两篇起步使用webview参考文章,第一篇解除限制,但会调用外部浏览器打开链接,第二篇 覆盖shouldOverrideUrlLoading return true https://www.jb51. ...
- HTML元素解释
<html> 与 </html> 之间的文本描述网页 <body> 与 </body> 之间的文本是可见的页面内容 <head> 与 < ...
- OO第一次博客
过去的三周里我们完成了表达式求导的程序设计与构造.表达式求导程序,大致思路是实现一个表达式类,支持表达式的输入.求导运算和输出功能.可能的话,还可以增加表达式的化简方法,从而得到更高质量的输出结果.总 ...
- poi java读取excel文件
官网使用学习链接地址 http://poi.apache.org/components/spreadsheet/quick-guide.html
- 设置VS2017背景图片
设置方法很简单:安装扩展ClaudiaIDE 1.在这里下载扩展,https://visualstudiogallery.msdn.microsoft.com/9ba50f8d-f30c-4e33-a ...
- python解析FreeMind思维导图
记录瞬间 在实际工作中,通常需要使用思维导图进行一些分析和设计,但是,在设计好之后,想要把思维导图的内容转化成文字进行输出怎么做呢? 使用python(当然可以使用其他的语言进行处理)可以很好的解决这 ...
- 轻量级集群管理软件-Ansible
ansible概述和运行机制 ansible概述 Ansible是一款为类Unix系统开发的自由开源的配置和自动化工具, 它用Python写成,类似于saltstack和Puppet,但是有一个不同 ...