Posted on 2011-12-18 12:03
hoshelly 阅读(358)
评论(0) 编辑 收藏 引用
用友元函数重载“++”“--”时需要注意几点:
1)运算符++、--都对单值操作数产生影响,因此使用成员运算符函数重载++和--的成员函数通常返回指针this。
2)由于友元运算符函数没有this指针,因此不能引用this指针所指的对象,使用友元函数重载++、--时,应采用引用参数传递数据。
3)采用前缀和后缀方式的函数内部的语句可以相同,也可以不同,这取决于用户的考虑。
例子:
class book
{
public:
book(int i=0,int j=0);
void print();
friend book operator++(book &op);
private:
int x,y;
};
book::book(int i,int j)
{
x=i;
y=j;
}
void book::print()
{
cout<<" x: "<<x<<", y "<<y<<endl;
}
book operator++(book &op) //此处不能写成book operator++(book op), 参数必须是引用传递类型,而不是值传递。若这样做,以下主函数输出的值是不变的
{
++op.x;
++op.y;
return op;
}
void main()
{
book ob(20,30);
ob.print();
operator++(ob);
ob.print();
++ob;
ob.print();
}