天之道

享受编程的乐趣。
posts - 118, comments - 7, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

用友元函数重载“++”“--”时需要注意几点:
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();
}

 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理