社区
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 这个我实在是做不好了,谁能告诉我应该怎么做,谢谢了!
...全文
113
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
作业
写回复
配置赞助广告
用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++中的运算符...
基于
运算符重载
的那些事
由于对
运算符重载
不是多么理解诶,于是就百度了
一下
,结果发现一个解释很有趣的百度知道,分享看看。 代码如下:回答:+-*/这样的运算符重定义,比如你自定义了一个类a,然后你可以自己重载它的这些运算符,比如+返回...
南昌大学2004~2005年C++期末考试试卷
4. **
运算符重载
**:通过重载运算符,可以让类的操作更加自然和直观,是C++中一个重要的特性。 5. **模板**:模板用于创建泛型代码,能够处理多种数据类型,提高代码的可复用性。 6. **异常处理**:理解try-catch...
java 面试题 总结
从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然而 Stateful Session Bean 的优势却在于他可以维持使用者的状态。 9、...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章