增量操作符和流操作符的重载

      ++增量互有前增量和后增量区别,重载操作符时,虽然函数名相同,但是应有相应的区别.对于一个整型变量前增量操作符的结果与返回值变量是一致的,而后增量操作符返回的是一个临时变量。于是在增量操作符重载时也需要有前增量与后增量的区分。

   前增量操作对象与返回对象是同一个变量,在反应对象的前增量操作时,要求参数为对象的引用,返回值也是对象的引用:

className& operator++() ;//前增量操作符设置为类成员函数

 friend className& operator++(className&a) ;//前增量符作符设置为类友元函数。

而后增量符同样要求参数为引用,因为在调用上下中实参发生啦改变,但是为了与前增量符有所区别,C++提供了一个技术处理:

  className operator++(int ) ;//后量操作符设置为类成员函数

 friend className operator++(className &a,int i);  //友元函数,调用后增量符违背了函数参数匹配的常规,但是编译器专门做了特殊处理。

     对于流操作符。由于流操作符前置对象参数为ostream&out,它不是该类的对象,所以不可以设置为类的成员函数,必须设置为友元函数,友元函数不是类的成员函数,但是他的特殊之处在于他可以访问类的私有成员。所以有关流的操作符重载必须声明为友元函数,如 friend ostream& operator(className&a);

 

posted @ 2015-12-29 15:07  曹孟德  阅读(270)  评论(0编辑  收藏  举报