社区
C语言
帖子详情
各位大侠帮我看一下这题。(运算符重载) 谢了!
ra3
2002-05-14 09:55:39
18.1 定义复数类的加法与减法,使之能够执行下列运算:
Complex a(2,5),b(7,8),c(0,0);
c=a+b;
c=b+5.6;
c=4.1+a;
c=4.1+a 这个我实在是做不好了,谁能告诉我应该怎么做,谢谢了!
...全文
157
7
打赏
收藏
各位大侠帮我看一下这题。(运算符重载) 谢了!
18.1 定义复数类的加法与减法,使之能够执行下列运算: Complex a(2,5),b(7,8),c(0,0); c=a+b; c=b+5.6; c=4.1+a; c=4.1+a 这个我实在是做不好了,谁能告诉我应该怎么做,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
T34
2002-05-14
打赏
举报
回复
小虫的解是对的,可以再简单一点,省一个constructor
complex(double d1 = 0,double d2 = 0):real(d1),image(d2)
{}
Effective C++的条款19中有一个有理数Rational的例子,说明为什么要这么做
c_antinomy
2002-05-14
打赏
举报
回复
本质上是类型转换的问题(对运算符的重载没有涉及到类型转换):
1.定义构造函数完成转换,这是隐含的:
Complex(T t) : real(T), image(0)
{ }
2.定义类型转换函数,这是显式的:
operator T() const
{
return real;
}
Complex cplTest(3.34);
T tTest = cplTest;
这两种方法互相补充,各有所长。
fangrk
2002-05-14
打赏
举报
回复
Complex operator+(const Complex&T,float F){
return Complex(T.getReal()+F,T.getImag());
}
Complex operator+(float F,const Complex&T){
return Complex(T.getReal()+F,T.getImag());
}
Complex operator-(float F,const Complex&T){
return Complex(F-T.getReal(),T.getImag()*(-1));
}
Complex operator-(const Complex&T,float F){
return Complex(T.getReal()-F,T.getImag());
}
Complex operator+(const Complex&T1,const Complex&T2){
return Complex(T1.getReal()+T2.getReal(),
T1.getImag()+T2.getImag());
}
Complex operator-(const Complex&T1,const Complex&T2){
return Complex(T1.getReal()-T2.getReal(),
T1.getImag()-T2.getImag());
}
earthharp
2002-05-14
打赏
举报
回复
楼上的
kof99th
2002-05-14
打赏
举报
回复
#include <iostream.h>
class complex{
double real,image;//实部,虚部
public:
friend complex operator*(const complex&,const complex&);
friend complex operator+(const complex&,const complex&);
complex(double d):real(d),image(0)
{}
complex(double d1,double d2):real(d1),image(d2)
{}
};
complex operator*(const complex& c1,const complex& c2)
{
return complex(c1.real*c2.real-c1.image*c2.image,
c1.real*c2.image+c1.image*c2.real);
}
complex operator+(const complex& c1,const complex& c2)
{
return complex(c1.real+c2.real,c1.image+c2.image);
}
试试吧
kof99th
2002-05-14
打赏
举报
回复
可以通过重载消除隐式转换。
complex operator(const double&,const complex&);
可以计算c=4.1+a;而不用将4.1转换为complex对象。
lak47
2002-05-14
打赏
举报
回复
加点我的想法
template<class _T> Complex operator+(const Complex&T,_T F){...}
template<class _T> Complex operator+(_T F,const Complex&T){...}
template<class _T> Complex operator-(_T F,const Complex&T){...}
template<class _T> Complex operator-(const Complex&T,_T F){...}
C++
运算符重载
本文深入解析C++中
运算符重载
的规则与限制,包括赋值、函数调用、下标和指针访问等特殊运算符的重载方式。探讨了单目与双目运算符的重载细节,以及自增自减、指针运算符的特殊重载方法。
c++ 重载<运算符自定义结构体排序
本文介绍了在C++中通过重载小于运算符实现自定义结构体的排序方法。当结构体重载了<运算符后,可直接使用std::sort进行排序,无需额外提供比较函数,提升了代码简洁性和可读性。
C语言c2679错误,编译链接errorC2679,操作符重载
探讨C++中TIME类与SMSDATA类输入输出
运算符重载
的问题,特别是TIME类对象作为成员变量时出现的编译错误。作者在TIME类中成功实现了输入输出重载,但在SMSDATA类中调用时遇到编译错误。
c语言error c2679,编译链接errorC2679,操作符重载
博主在自定义TIME和SMSDATA类时遇到编译错误,尽管已重载了输入输出操作符,但在SMSDATA.cpp中却报错。问题可能出在编译链接过程或者类的使用上。本文将揭示如何排查并修复此类问题。
operator=函数.
本文深入探讨了C++中自定义类的赋值
运算符重载
问题,特别是针对包含动态分配资源的情况。通过实例讲解了深拷贝的重要性,并提供了实现自定义赋值运算符的具体步骤。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章