问一个到处找不到答案的问题!

hanbi 2005-06-30 03:52:26
一个类中可以对一个操作符进行多次重载吗?
谁有例子可以证明这个?
还是它根本就是错的?
...全文
135 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
代码之诗 2005-07-01
  • 打赏
  • 举报
回复
楼上的这个例子与楼主的贴子不算太切题,因为这个例子并不是“成员函数的重载”,一个是成员操作符,一个是友员操作符,它们的函数签名几乎(命名空间不一样)是一样的。我只能说,这个例子举得不好,因为调用的时候有二义性,两个操作符同等匹配,即使编译器能理解程序员也不能理解啊,天知道调用的是哪个操作符啊。
winterli007 2005-06-30
  • 打赏
  • 举报
回复
#include <iostream.h>
//using namespace std;

class Integer
{
int i;
public:
Integer(int ii):i(ii) {}
const Integer operator+(const Integer& rv) const
{
return Integer(i+rv.i);
}
friend Integer operator+(const Integer & left,const Integer & right);
};

Integer operator+(const Integer& left, const Integer &right)
{
return Integer(left.i+right.i );
}
void main()
{

}
是这意思吗?
naturemickey 2005-06-30
  • 打赏
  • 举报
回复
重载是什么意思你明不明白?
理不理解?
代码之诗 2005-06-30
  • 打赏
  • 举报
回复
首先我猜测你的"在一个类中"是指重定义成员操作符.
这个要看你是什么操作符了. 对于一元操作符或者强制类型转换操作符, 一定是不行的,因为它只有一个参数,而且只能是this,对于二元操作符或三元操作符,是可以的.只要它们之间的参数不同就行.
最后是new操作符和delete操作符,new操作符可以有三个,分别是 new(), new(size_t) 和 new(void*, size_t), delete可以有两个, 分别是 delete() 和 delete(size_t).
唯一不知道的是: 有没有第三种 delete. 按照new和delete的对称关系,应该是有的,但我不知道.
dongpy 2005-06-30
  • 打赏
  • 举报
回复
可以,只要满足重载的条件:重载函数的参数列表不同.
hanbi 2005-06-30
  • 打赏
  • 举报
回复
不会写啊,高手指点一下好吗
cpp2017 2005-06-30
  • 打赏
  • 举报
回复
写一样就知道了 ______________________________________________ http://freehost26.websamba.com/zf0924/csdn.rar (2005年06月30日 15时57分06秒)

65,206

社区成员

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

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