双目运算符重载 operator==

windxnet 2005-08-12 09:01:14
怎么重载"=="啊.为什么我重载的时候,告诉我说"=="只有一个参数啊?怎么回事啊?能不能重载啊?如果能应该怎么重载呢?谢谢...
...全文
417 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
友元方式重载时有两个参数
成员函数重载时只有一个参数

65,186

社区成员

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

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