8章多态性 H 82.1运算符重载的规则 运算符是在C++系统内部定义的,它们具有特定的 语法规则,如参数说明、运算顺序、优先级别等。因 此,运算符重载时必须要遵守一定的规则 ①C艹中的运算符除了少数几个(类属关系运算符 、作用域分辨符“:″、成员指针运算符“*” sizeof运算符和三目运算符“?:”)之外,全部可以 重载,而且只能重载C艹+中已有的运算符,不能臆造 新的运算符
第8章 多态性 8.2.1 运算符重载的规则 运算符是在C++系统内部定义的,它们具有特定的 语法规则,如参数说明、运算顺序、优先级别等。因 此,运算符重载时必须要遵守一定的规则。 ①C++中的运算符除了少数几个(类属关系运算符 “.” 、作用域分辨符“ ::” 、成员指针运算符“*” 、 sizeof运算符和三目运算符“?: ”)之外,全部可以 重载,而且只能重载C++中已有的运算符,不能臆造 新的运算符
8章多态性 H ②重载之后运算符的优先级和结合性都不能改变, 也不能改变运算符的语法结构,即单目运算符只能重 载为单目运算符,双目运算符只能重载为双目运算符。 ③运算符重载后的功能应当与原有功能相类似 ④重载运算符含义必须清楚,不能有二义性, 运算符的重载形式有两种:重载为类的成员函数和 重载为类的友元函数
第8章 多态性 ②重载之后运算符的优先级和结合性都不能改变, 也不能改变运算符的语法结构,即单目运算符只能重 载为单目运算符,双目运算符只能重载为双目运算符。 ③运算符重载后的功能应当与原有功能相类似。 ④重载运算符含义必须清楚,不能有二义性。 运算符的重载形式有两种:重载为类的成员函数和 重载为类的友元函数
8章多态性 H 运算符重载为类的成员函数的一般语法形式如下: <函数类型> operator<运算符>(形参表) 函数体; 运算符重载为类的友元函数的一般语法形式如下: friend<函数类型> operator<运算符>(形参表) 函数体;
第8章 多态性 运算符重载为类的成员函数的一般语法形式如下: <函数类型>operator<运算符>(形参表) { 函数体; } 运算符重载为类的友元函数的一般语法形式如下: friend<函数类型>operator<运算符>(形参表) { 函数体; }
8章多态性 H 其中: ①函数类型指定了重载运算符的返回值类型,也就 是运算结果类型 ②2 operator是定义运算符重载函数的关键字。 ③运算符是要重载的运算符名称 ④形参表给出重载运算符所需要的参数和类型。 ⑤ friend是对于运算符重载为友元函数时,在函数 类型说明之前使用的关键字
第8章 多态性 其中: ①函数类型指定了重载运算符的返回值类型,也就 是运算结果类型。 ②operator是定义运算符重载函数的关键字。 ③运算符是要重载的运算符名称。 ④形参表给出重载运算符所需要的参数和类型。 ⑤friend是对于运算符重载为友元函数时,在函数 类型说明之前使用的关键字
8章多态性 H 特别需要注意的是,当运算符重载为类的成员函 数时,函数的参数个数比原来的操作数个数要少一个 (后置“++”、“-”除外);当重载为类的友元函数时, 参数个数与原操作数的个数相同。原因是重载为类的 成员函数时,如果某个对象使用重载了的成员函数, 自身的数据可以直接访问,就不需要再放在参数表中 进行传递,少了的操作数就是该对象本身
第8章 多态性 特别需要注意的是,当运算符重载为类的成员函 数时,函数的参数个数比原来的操作数个数要少一个 (后置“++”、“--”除外);当重载为类的友元函数时, 参数个数与原操作数的个数相同。原因是重载为类的 成员函数时,如果某个对象使用重载了的成员函数, 自身的数据可以直接访问,就不需要再放在参数表中 进行传递,少了的操作数就是该对象本身