Posted on 2011-12-18 12:03
hoshelly 閱讀(364)
評論(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();
}