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
普通函数 1 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。
运算符重载:
原型:
------------返回值类型 operator 运算符 (形参表)
重载运算符的函数参数不能全部时c++的标准类型。
在c++中只能重载单目运算符、双目运算符及不确定目数运算符“()”。
运算符重载为类的成员函数:
------------class 类名
------------{
------------private:
------------//数据成员
------------public:
------------//公有函数
------------返回值类型 operator 运算符(形参表);
------------}//参数表中的参数个数比操作数个数少1
单目运算的运算符在一般情况下重载为类的成员函数时,形参表为空,以当即对象(即调用该运算符函数的对象)作为运算符的唯一操作数。
------------Integer operator-() const{ return Integer(-num);}
运算符重载为类的友元函数:
------------class 类名
------------{
------------private:
------------//数据成员
------------public:
------------//公有函数
------------friend 返回值类型 operator 运算符(形参表);
------------}//参数表中的参数个数与操作数相等
在重载运算符时,要求至少有一个参数的类型为用户自定义类。
运算符重载为普通函数:
------------返回值类型 operator 运算符(形参表)//参数表中的参数个数与操作数相等
类成员函数
友元函数
普通函数
一般来说,单目运算符最好重载为类的成员函数,双目运算符最好重载为类的友元函数或普通函数。
重载赋值运算符:
声明:
------------类名 类名::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
- C++ chapter 4
- C++ chapter 1
- C++ chapter 2
- C++ chapter 3
- C++ chapter 5
- C++ chapter 6
- flex4 读书笔记 Chapter 4
- flex4 读书笔记 chapter 2
- flex4 读书笔记 chapter 3
- C++ Primer 笔记4
- 【Objective-C 语言】4 …
- C++ static_cast
- Objective C 监听 通知
- fzu 1759 A^B % C
- C standard library contents
- C++ keyword: delete note
- C++ Log File Class
- C++ 使用 string 型態
- 关于对‘pthread_create’未定义的引…
- C++ chapter 2
- 进程和线程的区别
- APUE线程控制
- C++ chapter 3
- C++ chapter 4
- 成员函数和友元函数的区别
- 守护进程
- 在CSDN看到为一段关于阻塞方面的知…
- APUE高级IO
- C++ chapter 5
- C++ chapter 6
- APUE守护进程
- APUE进程间通信