社区
C++ 语言
帖子详情
类的实现,用"="重载?求助!!!
sharkzwn
2007-03-22 05:59:19
复数类:
1.按照a+bi的形式显示一个复数
2.有复数z,复数y,能实现复数z+y相加.(要求复数加法可以实现连加)
前两问好办!
3,实现complex z=a+bi, double x=z;(x=a+b)
这一问不会!
...全文
194
11
打赏
收藏
类的实现,用"="重载?求助!!!
复数类: 1.按照a+bi的形式显示一个复数 2.有复数z,复数y,能实现复数z+y相加.(要求复数加法可以实现连加) 前两问好办! 3,实现complex z=a+bi, double x=z;(x=a+b) 这一问不会!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Aresky
2007-03-22
打赏
举报
回复
对,编译器自己会构造拷贝构造函数
xlbdan
2007-03-22
打赏
举报
回复
嗯是的,本例中不用拷贝构造函数也可以,因为数据成员没有指针,
我写出来是为了更清楚的表达.
chenyu2202863
2007-03-22
打赏
举报
回复
很多入门书上都有
sharkzwn
2007-03-22
打赏
举报
回复
Complex c1(3,4); //产生了3+4i ,即a+bi
Complex z=c1; //调用拷贝构造函数.完成z=a+bi, z=3+4i
就是没有拷贝构造函数好像也可以阿??
Aresky
2007-03-22
打赏
举报
回复
拷贝构造函数也需要
Complex x = y;//调用拷贝构造函数
Complex x;
x = y;//调用=运算符
Aresky
2007-03-22
打赏
举报
回复
拷贝构造函数也需要
Complex x = y;//调用拷贝构造函数
Complex x;
x = y;//调用=运算符
Aresky
2007-03-22
打赏
举报
回复
//重载=运算符
Complex &operator= (const Complex &cl)
{
m_ImagePart=cl.m_ImagePart;
m_RealPart=cl.m_RealPart;
return *this;
}
xlbdan
2007-03-22
打赏
举报
回复
定义构造函数
Complex(double RealPart,double ImagePart)
{
m_ImagePart=ImagePart;
m_RealPart=RealPart;
}
加入一个拷贝构造函数
Complex(const Complex& cl)
{
m_ImagePart=cl.m_ImagePart;
m_RealPart=cl.m_RealPart;
}
Complex c1(3,4); //产生了3+4i ,即a+bi
Complex z=c1; //调用拷贝构造函数.完成z=a+bi, z=3+4i
再定义一个转换函数
operator double() //完成第三问后半部分,double x=z, x=a+b,即3+4=7
{
return m_ImagePart+m_RealPart;
}
sharkzwn
2007-03-22
打赏
举报
回复
帖这么多原码并没有实现第三问的问题啊
jixingzhong
2007-03-22
打赏
举报
回复
#include <iostream.h>
class Complex{
private:
double m_ImagePart;
double m_RealPart;
public:
Complex(double real=0,double image=0)
{
m_RealPart=real;
m_ImagePart=image;
}
virtual ~Complex();
friend Complex operator+(Complex n1,Complex n2);
Complex operator+=(Complex& n);
friend Complex operator-(Complex& n1,Complex& n2);
Complex operator-=(Complex& n);
friend bool operator ==(Complex& n1,Complex& n2);
Complex operator*=(Complex& n);
Complex operator=(Complex& n);
friend Complex operator*(Complex& n1,Complex& n2);
friend Complex operator/(Complex& n1,Complex& n2);
Complex operator/=(Complex& n);
void Print()
{
if(m_ImagePart>=0)
cout<<"\nData: "<<m_RealPart<<"+"<<m_ImagePart<<"i\n";
else
cout<<"\nData: "<<m_RealPart<<"+("<<m_ImagePart<<")i\n";
}
bool SetValue(double real,double image)
{
m_RealPart=real;
m_ImagePart=image;
return true;
}
bool GetValue(double* real,double* image)
{
if(!real || !image)return false;
*real=m_RealPart;
*image=m_ImagePart;
return true;
}
};
Complex operator+(Complex n1,Complex n2)
{
double r1,i1,r2,i2;
n1.GetValue(&r1,&i1);
n2.GetValue(&r2,&i2);
return Complex(r1+r2,i1+i2);
}
Complex Complex::operator+=(Complex& n)
{
double real,image;
n.GetValue(&real,&image);
real+=m_RealPart;
image+=m_ImagePart;
m_RealPart=real;
m_ImagePart=image;
return *this;
}
Complex Complex::operator-=(Complex& n)
{
double real,image;
n.GetValue(&real,&image);
real-=m_RealPart;
image-=m_ImagePart;
SetValue(real,image);
return *this;
}
Complex Complex::operator*=(Complex& n)
{
double real,image;
n.GetValue(&real,&image);
real*=m_RealPart;
image*=m_ImagePart;
SetValue(real,image);
return *this;
}
Complex operator-(Complex& n1,Complex& n2)
{
double r1,i1,r2,i2;
n1.GetValue(&r1,&i1);
n2.GetValue(&r2,&i2);
return Complex(r1-r2,i1-i2);
}
bool operator==(Complex& n1,Complex& n2)
{
double r1,i1,r2,i2;
n1.GetValue(&r1,&i1);
n2.GetValue(&r2,&i2);
return (r1==r2&&i2==i1)?true:false;
}
Complex Complex::operator =(Complex& n)
{
double r,i;
n.GetValue(&r,&i);
SetValue(r,i);
return *this;
}
Complex operator *(Complex& n1,Complex& n2)
{
double r1,i1,r2,i2;
n1.GetValue(&r1,&i1);
n2.GetValue(&r2,&i2);
return Complex(r1*r2,i1*i2);
}
Complex operator/(Complex& n1,Complex& n2)
{
double r1,r2,i1,i2;
n1.GetValue(&r1,&i1);
n2.GetValue(&r2,&i2);
return Complex(r1/r2,i1/i2);
}
Complex Complex::operator /=(Complex& n)
{
double real,image;
n.GetValue(&real,&image);
SetValue(m_RealPart/real,m_ImagePart/image);
return *this;
}
Complex::~Complex()
{
m_RealPart=m_ImagePart=0;
}
healer_kx
2007-03-22
打赏
举报
回复
显示是个小问题吧?
大神
求助
物资调运问题-大作业三.doc
MATLAB提供了一套强大的工具箱,可以帮助我们快速
实现
这些步骤,但对于初学者来说,理解模型背后的运筹学原理同样重要。在编写代码之前,建议先用笔和纸手动规划一个简单的示例,以确保理解和模型的正确性。
商品信息管理课程设计
- `classroom`
类
作为`Classroombase`的派生
类
,
实现
数据修改和查询等高级功能。 - 主函数用于指导用户操作并调用各
类
的功能。 2. **主函数的设计**:主函数负责引导用户操作并实例化
类
对象来执行各种功能。 ####...
C#微软培训资料
4.2 引 用
类
型 .33 4.3 装箱和拆箱 .39 4.4 小 结 .42 第五章 变量和常量 .44 5.1 变 量 .44 5.2 常 量 .46 5.3 小 结 .47 第六章
类
型 转 换 .48 6.1 隐式
类
型转换 .48 6.2 显式
类
型转换 .53 ...
《java程序设计第五版》郑州大学软件学院10级java实验报告(第8章).doc
《Java程序设计第五版》是Java编程学习的重要教材,针对郑州大学软件学院10级学生的实验报告,主要涉及了三个核心知识点:Time
类
的修改与扩展、复数
类
的
实现
。 首先,8.3.1章节关注的是Time
类
的实践。实验目标在于...
JAVA实验报告心得.doc
- **
类
实现
接口**:
类
通过`implements`关键字
实现
接口,并提供接口中声明的所有方法的具体
实现
。 通过上述实验,不仅可以系统地学习Java编程的基础知识,还能深入了解面向对象编程的核心概念和技术。这些实验不仅有...
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章