++重载问题

lawmat2003 2006-09-25 10:40:00
#include <iostream>
using namespace std;

class Test
{
public:
Test(int a = 0)
{
Test::a = a;
}
friend Test operator +(Test&,Test&);
friend Test& operator ++(Test&);
public:
int a;
};
Test operator +(Test& temp1,Test& temp2)//+运算符重载函数
{
//cout<<temp1.a<<"|"<<temp2.a<<endl;//在这里可以观察传递过来的引用对象的成员分量
Test result(temp1.a+temp2.a);
return result;
}


Test& operator ++(Test& temp)//++运算符重载函数




{
temp.a++;
return temp;
}
int main()
{
Test a(100);
Test c=a+a;
cout<<c.a<<endl;
c++; //!!!!!!!!!!!!!!!!!错误出现
cout<<c.a<<endl;
system("pause");
}



这样错误提示 说c++应该写++c
我把++的重载函数的返回类型 & 去掉
为什么不行?

...全文
213 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuqing1980 2006-09-26
  • 打赏
  • 举报
回复
你这是在VC下吗,我看了清华出版的C++程序设计中说到,对于Test& operator ++(Test& temp)//++运算符重载函数 这种重载c++和++c是一样的效果,而且我运行的时候也没有出错啊!
taodm 2006-09-26
  • 打赏
  • 举报
回复
呃,可看C++ Primer P625.
虽然++运算也可以用友元实现,但是强烈建议你用成员函数来实现。
lann64 2006-09-25
  • 打赏
  • 举报
回复
各位,拜托了,lz是用friend实现的重载,按各位的定义方式没法实现的。
OOPhaisky 2006-09-25
  • 打赏
  • 举报
回复
Test& operator ++(Test& temp)//++运算符重载函数
===================================================
错了!
要采用这种形式:
const Returntype operator ++(int); //后缀++操作符
ReturnType& operator ++(); //前缀++操作符
etymet2006 2006-09-25
  • 打赏
  • 举报
回复
前增量应该返回引用,后增量应该返回值
后增量应该是
Test operator ++(Test& temp)
{
Test temp(*this);
a++;
return temp;
}
飞哥 2006-09-25
  • 打赏
  • 举报
回复
Returntype operator ++( int ) ; //后缀
ReturnType operator ++( ) ; //前缀
  • 打赏
  • 举报
回复
你的后缀++的重载定义不对
参数写成(int)试下
lann64 2006-09-25
  • 打赏
  • 举报
回复
Test& operator ++(Test& temp)//++运算符重载函数
你这样定义的是重载前缀++操作符,后缀应该定义为
Test operator ++(Test & temp,int ) //增加一个不使用的形参int
物欲添彩 2006-09-25
  • 打赏
  • 举报
回复
其他人说的是 作为类 成员重再的情况
没有什么理由 这是规定
suhanzhong 2006-09-25
  • 打赏
  • 举报
回复
支持楼上 lann64(昆仑大鹏)
其他人说的是 作为类 成员重再的情况
没有什么理由 这是规定
前缀++操作符 是一般 一元 方式
后缀++操作符 弄个不使用的int 也是为了符合 重载的规则而已!!
呵呵

64,666

社区成员

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

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