社区
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 这个我实在是做不好了,谁能告诉我应该怎么做,谢谢了!
...全文
118
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++ 复制控制和智能指针
与拷贝构造函数类似,如果对象包含动态分配的资源,需要重载赋值运算符以防止浅复制导致的问题。这通常被称为"安全赋值"或"自赋值"。 4. 析构函数:析构函数在对象生命周期结束时自动调用,负责释放对象可能占用的...
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章