8章多态性 H 822运算符重载为成员函数 运算符重载实质上就是函数重载,当运算符重载 为成员函数之后,它就可以自由地访问本类的数据成 员了。实际使用时,总是通过该类的某个对象来访问 重载的运算符。如果是双目运算符,一个操作数是对 象本身的数据,由this指针指出,另一个操作数则需要 通过运算符重载函数的参数表来传递;如果是单目运 算符,操作数由对象的this指针给出,就不再需要任何 参数。下面分别介绍这两种情况
第8章 多态性 8.2.2 运算符重载为成员函数 运算符重载实质上就是函数重载,当运算符重载 为成员函数之后,它就可以自由地访问本类的数据成 员了。实际使用时,总是通过该类的某个对象来访问 重载的运算符。如果是双目运算符,一个操作数是对 象本身的数据,由this指针指出,另一个操作数则需要 通过运算符重载函数的参数表来传递;如果是单目运 算符,操作数由对象的this指针给出,就不再需要任何 参数。下面分别介绍这两种情况
H 8章多态性 1.双目运算: oprdIBoprd2 对于双目运算符B,如果要重载B为类的成员函数, 使之能够实现表达式 oprdiBoprd2(其中 opraH为A类的对 象),则应当把B重载为A类的成员函数,该函数只有 个形参,形参的类型是oprd2所属的类型。经过重载之 后,表达式 oprdIBoprd2就相当于函数调用 oprdl. operator B(oprd2)
第8章 多态性 1.双目运算:oprdlBoprd2 对于双目运算符B,如果要重载B为类的成员函数, 使之能够实现表达式oprdlBoprd2(其中oprdl为A类的对 象),则应当把B重载为A类的成员函数,该函数只有一 个形参,形参的类型是oprd2所属的类型。经过重载之 后,表达式oprdlBoprd2就相当于函数调用 oprdl.operatorB(oprd2)
H 8章多态性 2.单目运算 )前置单目运算: Uoprd 对于前置单目运算符U,如“-“(负号)、“++〃等, 如果要重载U为类的成员函数,用来实现表达式 Uoprd(其中oprd为A类的对象,则U应当重载为A类的成 员函数,函数没有形参。经过重载之后,表达式 Uoprd 相当于函数调用 oprd operator( 例如,前置单目运算符“++″重载的语法形式如下: <函数类型> operator++ 使用前置单目运算符“++〃的语法形式如下: ++<对象>
第8章 多态性 2.单目运算 1)前置单目运算:Uoprd 对于前置单目运算符U,如“-”(负号)、 “++”等, 如 果 要 重载 U为 类 的 成 员函 数 ,用 来 实现 表 达 式 Uoprd(其中oprd为A类的对象),则U应当重载为A类的成 员函数,函数没有形参。经过重载之后,表达式Uoprd 相当于函数调用oprd.operatorU()。 例如,前置单目运算符“++”重载的语法形式如下: <函数类型>operator++(); 使用前置单目运算符“++”的语法形式如下: ++<对象>;
8章多态性 H 2)后置单目运算:oprdⅤ 再来看后置运算符V,如“++〃和“-〃,如果要将 它们重载为类的成员函数,用来实现表达式oprd+或 oprd-(其中oprd为A类的对象),那么运算符就应当重载 为A类的成员函数,这时函数要带有一个整型(int形参 重载之后,表达式oprd++和oprd-航相当于函数调用 oprd operator++(O)FHoprd operator--(O) 例如,后置单目运算符“++″重载的语法形式如下: <函数类型> operator++(int 使用后置单目运算符“++〃的语法形式如下: <对象>++
第8章 多态性 2) 后置单目运算:oprdV 再来看后置运算符V,如“++”和“--” ,如果要将 它们重载为类的成员函数,用来实现表达式oprd++或 oprd-(其中oprd为A类的对象),那么运算符就应当重载 为A类的成员函数,这时函数要带有一个整型(int)形参。 重载之后,表达式oprd++和oprd--就相当于函数调用 oprd.operator++(0)和oprd.operator--(0)。 例如,后置单目运算符“++”重载的语法形式如下: <函数类型>operator++(int); 使用后置单目运算符“++”的语法形式如下: <对象>++;
H 8章多态性 【例8-1】双目运算符重载为成员函数例题。 本例题重载二维点 point加减法运算(关于二维点 point类的定义在前面章节中已介绍过),将一个双目运 算符重载为成员函数。 point的加减法是x和y分别相加 减,运算符的两个操作数都是 point类的对象,因此, 可以把“+"、“-"运算符重载为 point类的成员函数 重载函数只有一个形参,类型同样也是 point类对象
第8章 多态性 【例8-1】双目运算符重载为成员函数例题。 本例题重载二维点point加减法运算(关于二维点 point类的定义在前面章节中已介绍过),将一个双目运 算符重载为成员函数。point的加减法是x和y分别相加 减,运算符的两个操作数都是point类的对象,因此, 可以把“+” 、 “-”运算符重载为point类的成员函数, 重载函数只有一个形参,类型同样也是point类对象