C++ chapter 4

来源:互联网 发布:js reverse返回值 编辑:程序博客网 时间:2024/05/22 10:49
运算符重载函数的返回值有时候不是必须的,可能只是为了一致性。

运算符重载:

原型:
------------返回值类型 operator 运算符 (形参表)
重载运算符的函数参数不能全部时c++的标准类型。

在c++中只能重载单目运算符、双目运算符及不确定目数运算符“()”。

运算符重载为类的成员函数:
------------class 类名
------------{
------------private:
------------//数据成员
------------public:
------------//公有函数
------------返回值类型 operator 运算符(形参表);
------------}//参数表中的参数个数比操作数个数少1

单目运算的运算符在一般情况下重载为类的成员函数时,形参表为空,以当即对象(即调用该运算符函数的对象)作为运算符的唯一操作数。
------------Integer operator-() const{ return Integer(-num);}

运算符重载为类的友元函数
------------class 类名
------------{
------------private:
------------//数据成员
------------public:
------------//公有函数
------------friend 返回值类型 operator 运算符(形参表);
------------}//参数表中的参数个数与操作数相等
在重载运算符时,要求至少有一个参数的类型为用户自定义类。

运算符重载为普通函数:
------------返回值类型 operator 运算符(形参表)//参数表中的参数个数与操作数相等

                                  单目                 双目
类成员函数                  0                    1/2
友元函数                     1                     2
普通函数                                          2

一般来说,单目运算符最好重载为类的成员函数双目运算符最好重载为类的友元函数或普通函数

重载赋值运算符:
声明:
------------类名 类名::operator= ( const 类名 & 源对象 )
------------{
------------if( this != & 源对象 )
------------{....}
------------return *this;
------------}

重载自增自减运算符:
声明:
成员函数:
------------类名 operator++();  //前缀自增
------------类名 operator++(int); //后缀自增
------------类名 operator--(); //前缀自减
------------类名 operator--(int);//后缀自减
友元函数:
------------friend 类名 operator++( 类名 & ); //前缀自增
------------friend 类名 operator++( 类名 &, int ); //后缀自增
------------friend 类名 operator--( 类名 & ); //前缀自减
------------friend 类名 operator--( 类名 &, int ); //后缀自减
普通函数:
------------类名 operator++(类名 &);  //前缀自增
------------类名 operator++(类名 &,int); //后缀自增
------------类名 operator--(类名  &); //前缀自减
------------类名 operator--(类名 &, int);//后缀自减

重载下标运算符[]
c++规定重载下表运算符[]只能重载为类的成员函数
声明:
------------返回值类型 &operator [] (int); //返回数组元素的别名

重载函数调用运算符()
c++规定重载下表运算符()只能重载为类的成员函数
声明:
------------返回值类型 operator ()(形参表);

重载输入运算符>>和输出运算符<<
声明:
friend istream &operator>>( istream &, 类名 & );//重载为类的友元函数
friend ostream &operator<<( ostream &, const 类名 &); //重载为类的友元函数
istream &operator>>( istream &, 类名 &);  //重载为普通函数
ostream &operator<<( ostream &, const 类名 &);  //重载为普通函数

只有成员函数才能在函数头的尾部加上关键字const称为常成员函数,而友元函数或普通函数不是成员函数,所以不能在友元函数或普通函数的函数头的部尾加上关键字const。
0 0
原创粉丝点击