第13章 运算符重载
2021/2/24 1 第13章 运算符重载
运算符重载 C++中允许使用者重新定义已有的运算,使之能按用 户规定的要求完成某些特定的操作,称运算符重载。 运用运算符重载可完成对象间的复杂操作,如加、 减法等 重载运算符 完成运算符重载的函数称为运算符重载函数。定义 算符重载函数的一般格式为: 返 值的类型类名porc数符 类型 运算件数所在的类 2021/224
2021/2/24 2 运算符重载 C++中允许使用者重新定义已有的运算,使之能按用 户规定的要求完成某些特定的操作,称运算符重载。 运用运算符重载可完成对象间的复杂操作,如加、 减法等。 重载运算符 完成运算符重载的函数称为运算符重载函数。定义 运算符重载函数的一般格式为: 类型 类名::operator @(参数表) {…} //函数体 关键字 重载运算符 函数 返回 值的 类型 运算符重载函数所在的类
例1:定义一个复数类,重载“+”和“-”运算符,使 这两个运算符能直接完成复数的加法和减法运算。 执行后输出: Real 55 Image=50 1301 R ea Image=50 Real=125 Image=250 Real=150 Image=300 Real=250 Image=500 注 1.优先级和结合顺序不变 2.不能改变目数,单目无参数双目一个参数 3重载函数名必须为 operator,后接一个合法的运 算符 2021/2/24
2021/2/24 3 例1:定义一个复数类,重载“+”和“-”运算符,使 这两个运算符能直接完成复数的加法和减法运算。 1301 执行后输出: Real=25 Image=50 Real=25 Image=50 Real=125 Image=250 Real=150 Image=300 Real=250 Image=500 注: 1. 优先级和结合顺序不变 2 .不能改变目数,单目无参数双目一个参数 3 .重载函数名必须为operator,后接一个合法的运 算符
4C++中允许重载的运算符如下表: 81 > 88 〓 /=% A 81 = -> new delete 2021/224
2021/2/24 4 + - * / % ^ & | ~ ! , = < > <= >= ++ - - << >> == != && || += -= *= /= %= ^= &= |= <<= >>= [ ] ( ) -> ->* new delete 4.C++中允许重载的运算符如下表:
5C++中不允许重载的运算如下表: 运算符运算符的含义不允许重载的原因 三目运算符在C十中没有定义一个三目运算 符的语法 成员操作符为保证成员操作符对成员访间的 安全性,故不允许重载 成员指针操作符同上 作用域操作符|因该操作符左边的操作数是一个 ier求字节数操作符其操作数是一个类型名,而不是 20212/24
2021/2/24 5 运算符 运算符的含义 不允许重载的原因 ?: 三目运算符 在C++中没有定义一个三目运算 符的语法 . 成员操作符 为保证成员操作符对成员访问的 安全性,故不允许重载 * 成员指针操作符 同上 :: 作用域操作符 因该操作符左边的操作数是一个 类型名,而不是一个表达式 sizeof 求字节数操作符 其操作数是一个类型名,而不是 一个表达式 5.C++中不允许重载的运算如下表: