19软工1班 运算符重载

用户头像
来自上海海洋大学-陈瑞康发布于:2020-05-12 19:52:51

运算符重载定义:

对基本运算符号  +, -, *, /, =, (), [ ]等,增加定义能计算自定义数据(结构和类)的新的功能,以便与系统中这些符号的原功能构成重载。

注意:

C++中,不能创建新的运算符。除少数几个预定义的运算符不能重载之外,基本运算符中大部分都可以重载。

C++中运算符重载的规则如下:

1) C++中绝大部分的运算符允许重载,除了:..*::Sizeof?:

2) 只能对已有的C++运算符进行重载,不允许用户自己定义新的运算符;

3)使用方法与运算符作基本数据运算时的调用方法一致

4)不能改变运算符的操作对象的个数、优先级别、结合性;

5)  起码有一个操作数是自定义数据类型 ;

6)运算符重载可以是普通函数,也可以是类的成员函数,还可以是类的友元函数;

7)一般而言,用于类对象的运算符必须重载,但赋值运算符“=”例外。

运算符重载函数的两种形式

重载为类成员函数。(称为成员运算符函数)

重载为成员函数后,第1个参数是调用函数的对象, 该对象可由this指针找到,因此可隐含不写,形参表中从第2个操作数开始罗列。

定义成员运算符重载函数的语法形式:

1)类内部,定义成员运算符重载函数的格式:

      函数类型 operator 运算符(形参表)

      {函数体}

2)类中声明,类外定义成员运算符重载函数的格式:

      class X{

       函数类型 operator 运算符(形参表);

      }; 

      函数类型 X::operator 运算符(形参表)

      {函数体

      };

重载为类的友员函数(称为友元运算符函数)

定义友元运算符重载函数的语法形式:

1)类内部,定义友元运算符重载函数的格式:

      friend 函数类型 operator运算符(形参表)

      {函数体}

2)类中声明,类外定义友员运算符重载函数的格式:

      class X{

       friend 函数类型 operator运算符(形参表);

      }; 

      函数类型 operator运算符(形参表)

      {函数体

      }

注:

① 友员函数不能带(对象)的this 指针,该运算符的全部运算数都要给出。

② 运算符“=”,“()“[ ]”,“->”等在C++中不能用友员函数重载。

点赞 (34) 回复
1F 用户头像
来自上海海洋大学-竹沛齐发布于:2020-05-19 21:17:14

重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个函数完成不同的功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。不能只有函数返回值类型不同。

加载更多
点击图片
取消
回复
2F 用户头像
来自上海海洋大学-朱灿成发布于:2020-05-19 21:55:32

C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。

加载更多
点击图片
取消
回复
3F 用户头像
来自上海海洋大学-朱开元发布于:2020-05-19 22:03:30
加载更多
点击图片
取消
回复
4F 用户头像
来自上海海洋大学-张文博发布于:2020-05-19 22:05:26

载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。

加载更多
点击图片
取消
回复
发布回复
点击图片