第8章竭算等宜缴 8.1述 8.2运拿重的一, 8.3—些特殊作的重 人民邮电出版社 POSTS tEl OM PRE 动此映
第8章 运 算 符 重 载 8.1 概 述 8.2 运算符重载的一般规则 8.3 一些特殊操作符的重载
运算符重载就是给已有运算符赋予更多的 含义。通过重新定义运算符,使它能够用 于特定类的对象执行特定的功能。运算符 重载提供了重新定义语言、扩展语言的能 力,使程序更加容易阅读和调试。 人民邮电出版社 POSTS tEl OM PRE 动此映
运算符重载就是给已有运算符赋予更多的 含义。通过重新定义运算符,使它能够用 于特定类的对象执行特定的功能。运算符 重载提供了重新定义语言、扩展语言的能 力,使程序更加容易阅读和调试
81概述 运算符通常是针对类中的私有成员进行操 作,因此重载运算符应该能够访问类中的 私有成员,所以运算符重载一般采用成员 函数或友元函数的方式。运算符重载的过 程是将现有运算符与成员函数或友元函数 相关联,使得该运算符具有将该类的对象 用作其操作数的能力。 人民邮电出版社 POSTS tEl OM PRE 动此映
8.1 概 述 运算符通常是针对类中的私有成员进行操 作,因此重载运算符应该能够访问类中的 私有成员,所以运算符重载一般采用成员 函数或友元函数的方式。运算符重载的过 程是将现有运算符与成员函数或友元函数 相关联,使得该运算符具有将该类的对象 用作其操作数的能力
如: if(obj1<=obj2){…} 其中ob和ob为类的对象,对象的比较 运算可在成员函数中定义或在友元中定义, 并与比较运算符关联。编译器可以通过检 查运算符数据类型来区分重载的运算符, 运算符重载是多态性的一种形式,即运算 符多态性。 人民邮电出版社 POSTS tEl OM PRE 动此映
如: if (obj1<=obj2){ …… } 其中obj1和obj2为类的对象,对象的比较 运算可在成员函数中定义或在友元中定义, 并与比较运算符关联。编译器可以通过检 查运算符数据类型来区分重载的运算符, 运算符重载是多态性的一种形式,即运算 符多态性
82运算符重载的一般规则 运算符重载具有以下原则 (1)重载的运算符是C++中已经存在的运 算符,不能够主观创造。 (2)运算符重载不能改变运算符的语法结 构,即操作数的个数 人民邮电出版社 POSTS tEl OM PRE 动此映
8.2 运算符重载的一般规则 运算符重载具有以下原则: (1)重载的运算符是C++中已经存在的运 算符,不能够主观创造。 (2)运算符重载不能改变运算符的语法结 构,即操作数的个数
(3)运算符重载不能改变C++语言中已定 义的运算符的优先顺序和结合性。 (4)运算符重载一般不改变运算符功能。 (5)不能重载的运算符有: sizeof)运算符; 成员运算符();指向成员的指针运算符(*); 作用域运算符(:);条件运算符( 人民邮电出版社 POSTS tEl OM PRE 动此映
(3)运算符重载不能改变C++语言中已定 义的运算符的优先顺序和结合性。 (4)运算符重载一般不改变运算符功能。 (5)不能重载的运算符有:sizeof()运算符; 成员运算符(.);指向成员的指针运算符(*); 作用域运算符(::);条件运算符(?:)
8.3一些特殊操作符的重就 运算符重载函数是指含有实际的重载运算 符的函数,一般采用两种形式:重载为类 的成员函数形式和友元函数形式 人民邮电出版社 POSTS tEl OM PRE 动此映
8.3 一些特殊操作符的重载 运算符重载函数是指含有实际的重载运算 符的函数,一般采用两种形式:重载为类 的成员函数形式和友元函数形式
8.3.1一元运算符重载 8.3.1.1重载为类的成员函数 将运算符重载函数说明为类的成员函数的 格式如下: operator() 要重载的运算符必须置于关键字 operator之后 人民邮电出版社 POSTS tEl OM PRE 动此映
8.3.1 一元运算符重载 8.3.1.1 重载为类的成员函数 将运算符重载函数说明为类的成员函数的 格式如下: operator () 要重载的运算符必须置于关键字operator之后
【例8.1】重载运算符++ class point private int xcoord; int ycoord public: Point oixcoord =0; ycoord=0;3 void operator++R++xcoord; + ycoord; s 人民邮电出版社 POSTS tEl OM PRE 动此映
【例8.1】重载运算符++。 class Point { private: int xcoord; int ycoord; public: Point (){xcoord =0; ycoord =0;} void operator++(){ ++xcoord; ++ ycoord;} };
void maino Point objl obj1++; 使 chord、 ycoord 增加1 ++obil: ∥(使 chord、 accord 增加2 人民邮电出版社 POSTS tEl OM PRE 动此映
void main() { Point obj 1 ; obj 1++ ; // 使 xcoord 、ycoord 增加 1 ++obj 1 ; // 使 xcoord 、ycoord 增加 2 }