c++运算符重载问题

类重载运算符++后缀operator++(int)与友元运算符重载++后缀operator++(n,int)中的int怎样理解?把他改为0,会怎样?改为别的类型float... 类重载运算符++后缀operator++(int)与友元运算符重载++后缀operator++(n,int)中的int怎样理解?把他改为0,会怎样?改为别的类型float会怎样?例如:

#include<iostream.h>
class number
{
private:
int num;
public:
number(int i){num=i;}
int operator++();
int operator++(int);
void print(){cout<<"num="<<num<<endl;}
};
int number::operator ++()
{
num++;
return num;
}
int number::operator ++(int)
{
int i=num;
num++;
return i;
}
void main()
{
number n(10);
int i=++n;
cout<<"i="<<i<<endl;
n.print();
i=n++;
cout<<"i="<<i<<endl;
n.print();
}
为什么我把(int)改为(float)发生错误
展开
 我来答
自由心向往之
2010-05-02 · TA获得超过306个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:276万
展开全部
C++中对++运算符的重载,前置++重载为operator++();后置++重载为operator++(int);括号中的参数是用来区别是前置还是后置的。重载为成员函数是,有默认的this指针,重载为友元函数是则没有,且参数要比重载为成员函数是多一个,所以要把数值传递进来(n)。
重载为成员函数:一元运算符,没有参数;二元运算符,一个参数。
重载为友元函数:一元运算符,一个参数;二元运算符,二个参数。

要改都改,类型要一致。
黄邦勇帅哥哥
2010-05-02 · TA获得超过3987个赞
知道大有可为答主
回答量:1199
采纳率:100%
帮助的人:491万
展开全部
1. 注意++有前缀和后缀之别,前缀形式是变量先加1然后执行表达式,而后缀形式则是先执行表达式然后再使变量加1,所以在执行后缀的++运算符时应先反回对象的原始值,然后才对对象加1。
2. 默认的带有一个参数的++运算符函数是前缀++运算符,要重载后缀的++运算符必须采用另一种方式实现。
重载后缀的++运算符时应给函数多增加一个int参数,该int参数不会使用,应忽略他,该参数只是为了让编译器区分++运算符的前缀和后缀形式之间的区别。比如重载后缀++运算符的友元函数形式为hyong operator ++(hyong &a, int i){}后面的参数int i没有实际意义,应忽略他。

呵呵,因为C++规定要是int型,没说要使用float类型,这是规定,没有什么规律。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式