双目运算符重载 operator==

windxnet 2005-08-12 09:01:14
怎么重载"=="啊.为什么我重载的时候,告诉我说"=="只有一个参数啊?怎么回事啊?能不能重载啊?如果能应该怎么重载呢?谢谢...
...全文
405 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-08-13
  • 打赏
  • 举报
回复
C++中有唯一的三目运算符 ? :
但这个运算符不可以重载!
也不能重载系统没有的运算符,如重载operator **()表示幂运算,因为系统没有**运算
zousoft 2005-08-13
  • 打赏
  • 举报
回复
是这样的,全局方式重载,几元运算就是几个参数,分别对应左右。成员函数方式比全局少一个左参数,这个参数就是类对象了。
同样一元运算,全局方式是一个参数,成员函数方式少一个,也就是没有参数。但是这里有一个比较奇怪的地方,这盛下来的参数不是左对象,而是右对象。举个例子:就是“++a”。这点我一开始也觉得挺奇怪的,但是没办法,死记吧。如果要表示“a++”,需要强行设一个哑元。(一般是int)把单元运算当成双元,其中右对象为毫无意义的哑元。(把我们要的对象强行挤到左边去-_-!)
lxk_cool 2005-08-13
  • 打赏
  • 举报
回复
不能臆造运算符.
重载时,不能改变原有的优先级,结合性,语法结构
windxnet 2005-08-12
  • 打赏
  • 举报
回复
哦.我明白了.谢谢你.那如果运算符是三元的呢?
pyrophile 2005-08-12
  • 打赏
  • 举报
回复
用成员函数重载运算苻的函数参数表中,若运算符是一元的,则参数表为空,此时当前对象 作为运算符的
单操作符;若运算符是二元的,则参数表中有一个操作数,此时当前对象作为此运算符的左操作数,参数表
中的操作数作为此运算符的右操作数.
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
你这样写的是成员函数方式,只能有一个参数
bool operator ==(const myPoint &pt);//声明部分

bool myPoint::operator==(const myPoint& pt)
{
if(this->m == pt.m && this->n == pt.n)
return true;
else
return false;
}
友元方式
friend bool operator==(const myPoint &p1,const myPoint &p2);//声明部分,类体内

//实现部分,类体外
bool operator==(const myPoint& p1,const myPoint& p2)
{
if(p1.m==p2.m && p1.n==p2.n)
return true;
else
return false;
}

windxnet 2005-08-12
  • 打赏
  • 举报
回复
==不是把两边的两个变量进行比较后产生一个bool值的吗?偶猜的啊.不对吗?我是想这么写.

bool myPoint::operator==(const myPoint& p1,const myPoint& p2)
{
if(p1.m==p2.m && p1.n==p2.n) return true;
else return false;
}
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复

bool ==();//这行是什么玩意??
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
另外一个参数就是*this传过去的!
windxnet 2005-08-12
  • 打赏
  • 举报
回复
class myPoint
{
public:
myPoint& operator=(const myPoint &p);
friend bool operator==(const myPoint &p1,const myPoint &p2);
bool ==();
int m,n;
};

好像不行,还想问一下.一个参数怎么重载爽目运算符啊?
yhbttfile 2005-08-12
  • 打赏
  • 举报
回复
呵呵,不会的就先依样画瓢~~~
看看人家是怎么写的,拿过来修改修改就OK了。

我写程序的时候其实是很懒的~~
foochow 2005-08-12
  • 打赏
  • 举报
回复
同意一楼
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
设你自定义的类是 ClassType
则成员函数方式重载的格式是
bool operator ==(const ClassType ¶);
友元方式重载则是:
friend bool operator ==(const ClassType ¶A, const Class ¶B);
xiaocai0001 2005-08-12
  • 打赏
  • 举报
回复
友元方式重载时有两个参数
成员函数重载时只有一个参数
华北科技学院计算机系综合性实验 实 验 报 告 课程名称 C++程序设计B 实验学期 2011 至 2012 学年 第 1 学期 学生所在系部 年级 专业班级 学生姓名 学号 任课教师 实验成绩 计算机系制 实验报告须知 1. 学生上交实验报告时,必须为打印稿(A4纸)。页面空间不够,可以顺延。 2. 学生应该填写的内容包括:封面相关栏目、实验地点、时间、目的、设备环境、内容 、结果及分析等。 3. 教师应该填写的内容包括:实验成绩、教师评价等。 4. 教师根据本课程的《综合性实验指导单》中实验内容的要求,评定学生的综合性实验成 绩;要求在该课程期末考试前将实验报告交给任课教师。综合性实验中,所涉及的 程序,文档等在交实验报告前,拷贝给任课教师。任课教师统一刻录成光盘,与该 课程的期末考试成绩一同上交到系里存档。 5. 未尽事宜,请参考该课程的实验大纲和教学大纲。 《C++程序设计B》课程综合性实验报告 开课实验室:基础五 2011年6月20日 "实验题目 "复数类的设计 " "一、实验目的 " "掌握类的概念及构造方法;掌握构造函数的定义与使用;掌握友元的定义与使用;掌握运" "算符的重载定义与使用。 " "二、设备与环境 " "微型计算机、Windows 系列操作系统 、Visual C++6.0软件 " "三、实验内容 " "设计复数类,重载+,-,*,/,<<,>>等运算符。编程设计实现下列函数: " "MyComplex(); " "MyComplex(int a); " "MyComplex(int a,int b) ; " "MyComplex(const MyComplex& v) ; " "Mycomplex& operator=(const Mycomplex& rhs); " "Mycomplex& operator+=(const Mycomplex& rhs); " "Mycomplex& operator-=(const Mycomplex& rhs); " "Mycomplex& operator*=(const Mycomplex& rhs); " "Mycomplex& operator/=(const Mycomplex& rhs); " "friend MyComplex operator+(MyComplex m,MyComplex n) ; " "friend MyComplex operator-(MyComplex m,MyComplex n) ; " "friend MyComplex operator*(MyComplex m,MyComplex n) ; " "friend MyComplex operator/(MyComplex m,MyComplex n) ; " "friend ostream& operator<<(ostream& s,MyComplex t); " "friend istream& operator>>(istream& s,MyComplex& t); " "四、实验结果及分析 " "1、题目分析及设计思路 " "题目要求实现复数的运算,首先创建一个类,其成员函数主要包括构造函数、拷贝函数" "、单目运算符的重载函数和双目运算符重载友元函数,然后是函数体的实现及主函数实" "现。 " "2、实验结果及分析 " "程序: " "#include " "#include " "class mycomplex//类的声明 " "{ " "private://私有数据 " "double real;// 实部 " "double imag;//虚部 " "public://公共数据 " "mycomplex(); " "mycomplex(double a); " "mycomplex(double a,double b); " "mycomplex(const mycomplex&v); " "mycomplex& operator=(const mycomplex& rhs); " "mycomplex& operator+=(const mycomplex& rhs); " "mycomplex& operator-=(const mycomplex& rhs); " "mycomplex& operator*=(const mycomplex& rhs); " "mycomplex& operator/=(const mycomplex& rhs); " "friend mycomplex operator+(mycomplex m,mycomplex n); " "friend mycomplex op

64,641

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧