【C++面向对象备忘录】3 运算符重载

赋值运算符

赋值运算符只能重载成成员函数
函数原型:

X & X::operator=(const X &source)
{
if (this == &source)
    return * this; //如果是自我复制,直接返回本身
// 赋值过程
}
  • 返回引用是为了避免拷贝构造拖慢程序;
  • 第一个判断是为自我复制时节约时间。

下标运算符

  • 下标运算符必须重载成成员函数;
  • 下标运算符是二元运算符,第一个运算数是数组名,第二个运算数是下标值。因此作为成员函数只有一个参数,即下标。

函数调用运算符

  • 函数调用运算符( )是一个二元运算符。它的第一个运算对象是函数名,第二个参数是形式参数表。运算的结果是函数的返回值。
  • 一个类重载了函数调用运算符,就可以把这个类的对象当做函数来使用
  • 函数调用运算符必须重载成成员函数
  • 函数调用运算符重载函数的原型为
函数的返回值 operator() (形式参数表);

++、--的重载

  • 成员函数重载
    ++ob重载为:ob.operator++()
    ob--重载为:ob.operator--(int)
  • 友元函数重载
    ++ob重载为:operator++(X &ob)
    ob--重载为:operator--(X &ob, int)
  • 调用时,参数int一般传递值0。

输入输出运算符重载

输出运算符(<<)重载原型

ostream & operator<<(ostream &  os, const ClassType &obj)
{ os << 要输出的内容;
  //只进行最小限度格式化,由用户控制输出细节,不应输出换行符
  return os;
} 

输入运算符重载的原型

istream & operator>>(istream & is,  ClassType &obj)
{ is >> 要输入的内容;
  return is;
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容