//使用运算符“++”重载为类的成员函数
#include <iostream>
class Number
{
public:
Number(int n=0)//构造函数
{
num=n;
}
int operator++();//前置++n
Number operator++(int );//后置n++
void print()
{
std::cout<<"num="<<num<<std::endl;
}
private:
int num;
};
//前置++n
int Number::operator++()
{
++num;
return num;
}
//后置n++
Number Number::operator++(int)//不用给出形参名
{
Number temp;
temp.num=num++;
return temp;
}
int main(int argc, const char * argv[])
{
Number m(20);
Number n(30),p;
int k=++m;
std::cout<<k<<std::endl;//21
m.print();//num=21
p=n++;
p.print();//num=30
n.print();//num=31
return 0;
}
//使用运算符“++”重载为类的友元函数
#include <iostream>
class Number
{
public:
Number(int n=0)//构造函数
{
num=n;
}
friend int operator++(Number& x);//前置++n
friend Number operator++(Number& ,int);//后置n++
void print(){ std::cout<<"num="<<num<<std::endl;}
private:
int num;
};
int operator++(Number& x)//前置++n
{
++x.num;
return x.num;
}
Number operator++(Number& x,int )
{
Number temp;
temp.num=x.num++;
return temp;
}
int main(int argc, const char *argv[])
{
Number m(20);
Number n(30),p;
int k=++m;
std::cout<<k<<std::endl;//21
m.print();
p=n++;
p.print();
n.print();
return 0;
}