读书人

++运算符重载是依据什么规则来选择的

发布时间: 2012-09-13 09:51:52 作者: rapoo

++运算符重载是根据什么规则来选择的?
书上的一个++运算符重载程序:
#include <iostream>
using namespace std;
class N
{
public:
N(int i)
{n=i;}
int operator ++();
int operator ++(int x);
void Print()
{ cout<<n<<endl;}
private:
int n;
};
int N::operator ++()
{n++;
return n;
}
int N::operator ++(int x)
{x=n;
n++;
return x;
}
void main()
{N n1(5);
int x=++n1;
cout<<"x="<<x<<endl;
n1.Print();
N n2(5);
x=n2++;
cout<<"x="<<x<<endl;
n2.Print();
}
我就是看不明白,主函数部分是根据什么选择规则来调用++重载函数的。

[解决办法]
根据operator ++()
operator ++(int x)
括号里有参数的话,就是a++,后置自加
没有的话,是++a,前置自加
[解决办法]
哦,这个我知道,程序在执行后++的时候会传个0,以匹配后++重载函数的参数
至于为什么会传个0,我想应该是C++规定的吧
[解决办法]
C++中++运算符可以是左操作的++也可以是右操作的++,哪如何区别呢?
答:主要是靠带不带参数来区别!
1.不带,默认就是前置;
2.带则变成后置。
楼主主要是问主函数如何区别,最通俗讲:是靠你把++写在对象的左边还是右边来区别到底调用哪个重载函数的。
[解决办法]
>问题是为什么operator ++(int x)是后置,operator ++()是前置?当中是根据什么规则来决定
这就是规则

读书人网 >C++

热点推荐