社区
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 这个我实在是做不好了,谁能告诉我应该怎么做,谢谢了!
...全文
177
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++
运算符重载
以上图片来自RUNOOB.COM 下面的运算符只能通过成员函数进行重载 =:赋值运算符 ():函数调用运算符 []:下标运算符 ->:通过指针访问变量的运算符 重载的运算符的限制和规则: 1.重载后的运算符必须至少有一个操作数是用户自己定义的类型,这将防止用户为标准类型重载运算符。 2.使用运算符时不能违反运算符原来的语法规则,例如,不能将求模运算符(%)...
c++ 重载<运算符自定义结构体排序
本文展示了通过重载<运算符实现结构体自定义排序的方法。定义了DaXia结构体,包含name、zhiLi和wuLi三个成员,重载了<运算符以武力值为主要排序依据(降序),武力相同时比较智商值(降序)。测试代码创建了三个
大侠
对象存入vector,调用sort函数后自动使用重载的运算符进行排序。结果验证了这种方法可以替代传统比较函数,使排序调用更加简洁。
C语言c2679错误,编译链接errorC2679,操作符重载
该楼层疑似违规已被系统折叠隐藏此楼查看此楼RT自己写了一个TIME类和SMSDATA类“Time.h”声明如下#ifndef _TIME_H#define _TIME_H#include using namespace std;class TIME{private:int hour;int min;int sec;public:friend ofstream& operator<&...
c语言error c2679,编译链接errorC2679,操作符重载
该楼层疑似违规已被系统折叠隐藏此楼查看此楼RT自己写了一个TIME类和SMSDATA类“Time.h”声明如下#ifndef _TIME_H#define _TIME_H#include using namespace std;class TIME{private:int hour;int min;int sec;public:friend ofstream& operator<&...
operator=函数.
首先讲
一下
为什么要写operator=函数.这是一个不得不解决而又容易忽视的问题!当我们写一个类的时候, 正常情况下不需要为该类重载=运算符, 因为系统为每个类提供了默认的赋值运算符, 该操作会把这个类的所有数据成员都进行一次=的操作进行赋值, 如果有以下类class Point{ public: flaot x; float y; float z;};那么对这个类的对象进行的任
C语言
70,040
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章