上面的运算符重载函数operator+还可写得更简练一些: Complex Complex:operator +(Complex &c2) {return Complex(real+c2.real,imag+c2.imag);) 运算符被重载后,其原有的功能仍然保留,没有丧失或 改变。 运算符重载,扩大了C++已有运算符的作用范围,使之能 用于类对象。 把运算符重载和类结合起来,可以在C++程序中定义出 很有实用意义而使用方便的新的数据类型
上面的运算符重载函数operator+还可写得更简练一些: Complex Complex∷operator + (Complex &c2) {return Complex(real+c2.real, imag+c2.imag);} 运算符被重载后,其原有的功能仍然保留,没有丧失或 改变。 运算符重载,扩大了C++已有运算符的作用范围,使之能 用于类对象。 把运算符重载和类结合起来,可以在C++程序中定义出 很有实用意义而使用方便的新的数据类型
10.3重载运算符的规则 M (1)C++不允许用户自己定义新的运算符,只能对已有的 C++运算符进行重载。 (2)C++允许重载的运算符 C++中绝大部分的运算符允许重载 不能重载的运算符只有5个: (成员访问运算符) (成员指针访问运算符) (域运算符) sizeof (长度运算符) (条件运算符)
10.3 重载运算符的规则 (1) C++不允许用户自己定义新的运算符,只能对已有的 C++运算符进行重载。 (2) C++允许重载的运算符 C++中绝大部分的运算符允许重载 . (成员访问运算符) .* (成员指针访问运算符) ∷ (域运算符) sizeof (长度运算符) ?: (条件运算符) 不能重载的运算符只有5个:
重载不能改变 类对象的运算符一般 必须重载,但有两个 运算符 例外,运算符“-” 运算符运算 运算符 和“&”不必用户重 对象(即操作 的优先 的结合 数)的个数 级别 性 载。 ①赋值运 ②地址 重载运算符 算符(=)可 运算符& 以用于每 也不必重 个类对 载,它能 其函数不能有默 必须和用户定义 象,可以 返回类对 认的参数,否则 的自定义类型的 利用它在 象在内存 就改变了运算符 对象一起使用, 同类对象 中的起始 参数的个数,与 其参数至少应有 之间相互 地址 前面矛盾。 个是类对象。 赋值
其函数不能有默 认的参数,否则 就改变了运算符 参数的个数,与 前面矛盾。 必须和用户定义 的自定义类型的 对象一起使用, 其参数至少应有 一个是类对象。 重载不能改变 运算符运算 对象(即操作 数)的个数 运算符 的优先 级别 运算符 的结合 性 重载运算符 类对象的运算符一般 必须重载,但有两个 例外,运算符“ = ” 和“&”不必用户重 载。 ① 赋值运 算符(=)可 以用于每 一个类对 象,可以 利用它在 同类对象 之间相互 赋值 ② 地址 运算符& 也不必重 载,它能 返回类对 象在内存 中的起始 地址
重载运算符的功能 类似于该运算符作用于标准 类型数据时所实现的功能 运算符重载函数 8環 类的成员函数 类的友元函数 普通函数
重载运算符的功能 运算符重载函数 类的成员函数 类的友元函数 普通函数 类似于该运算符作用于标准 类型数据时所实现的功能
10.4运算符重载函数作为类成员函数和友元函数 运算符重载: 函数operator-大一 Complex类中的成员函数 “+”是双目运算彳程序中的重载函数中只有一个参数 运算符重载函数实际上有两个参数 Complex Comple(Complex) 个参数是隐含的 另一个参数是 ↓ 函数本身的 运算符函数是用 this指针隐式地访 问类对象的成员
10.4 运算符重载函数作为类成员函数和友元函数 运算符重载: 函数operator+ Complex类中的成员函数 “+”是双目运算符程序中的重载函数中只有一个参数 运算符重载函数实际上有两个参数 一个参数是隐含的 运算符函数是用 this指针隐式地访 问类对象的成员 另一个参数是 函数本身的 Complex Complex∷operator + (Complex &c2)