
第18章运算符重载
第18章 运算符重载

目录18.1运算符重载的重要性18.2如何重载运算符18.3值返回和引用返回18.4一元运算符18.5二元运算符18.6特殊运算符重载18.7增量运算符重载
18.1 运算符重载的重要性 18.2 如何重载运算符 18.3 值返回和引用返回 18.4 一元运算符 18.5 二元运算符 18.6 特殊运算符重载 18.7 增量运算符重载

第18章运算符重载重载运算符时C++的一个特性。可以把C++运算符定义扩展到操作数是对象的情况。运算符重载的目的是:/使C++代码更直观,更易读。学习本章后理解怎样重定义与类有关的运算符
• 重载运算符时C++的一个特性。 • 可以把C++运算符定义扩展到操作数是对象 的情况。 • 运算符重载的目的是: ✓ 使C++代码更直观,更易读。 • 学习本章后理解怎样重定义与类有关的运算 符

18.13运算符重载的重要性运算符重载是对已有的运算符赋予多重含义使同一个运算符作用于不同类型的数据导致不同类型的行为。运算符重载的主要优点之一就是:√用户自定义的数据类型可使用编译系统预定义的运算符
• 运算符重载是对已有的运算符赋予多重含义, • 使同一个运算符作用于不同类型的数据导致 不同类型的行为。 • 运算符重载的主要优点之一就是: ✓ 用户自定义的数据类型可使用编译系统预 定义的运算符

运算符重载的重要性18.1·运算符即操作符。运算符优先级结合性10 .从左到右2从右向左!+正)(负)++3从左向右*/%4+(加)(减)从左向右5从左向右> >>>6从左向右=instanceof7从左向右=8(按位与)从左向右29从左向右101从左向右11oo从左向右I12从左向右?:13从右向左14=十=*/=%从右向左BaTCu>>>==些=<>Y=
• 运算符即操作符

18.1运算符重载的重要性C++认为用户定义的数据类型就像是基本数据类型int和char等一样。运算符(如十、一、*、/)是为基本数据类型定义的。例18-1:class AA a(5),b(5),c;Y/如何使类对象也能运算int a;public:c=a+b;A(intx)(a=x; )//
• C++认为用户定义的数据类型就像是基本数 据类型int和char等一样。 • 运算符(如+、-、 * 、/ )是为基本数据类型 定义的。 例18-1: class A { int a ; public: A ( int x ) { a = x; } //. } ; A a ( 5 ) , b ( 5 ) , c ; //如何使类对象也能运算? c = a + b ;

18.2 女如何重载运算符1、优先级与结合性不变运算符是在C++系统内部定义的,具有特定语法规则。如参数说明、运算顺序、优先级等。重载运算符时,要注意该重载运算符的运算顺序和优先级不变
1、优先级与结合性不变 • 运算符是在C++系统内部定义的,具有特定 语法规则。 • 如参数说明、运算顺序、优先级等。 • 重载运算符时,要注意该重载运算符的运算 顺序和优先级不变

18.2如何重载运算符class AAa=5,b=6,c=7,d=8,e;{/ / 即(a+(b*c))+dpublic :A(int n)e=a+b*c+d;(1//..1friend A operator +(A&,A&){/ /.friend Aoperator*(A&,A&)/ /.;
class A { public : A ( int n ) { //. } friend A operator + ( A & , A & ) { //. } friend A operator * ( A & , A & ) { //. } } ; A a = 5 , b = 6 , c = 7 , d = 8 , e ; //即(a+(b*c))+d e = a + b * c + d ;

18.2如何重载运算符,有了运算符,编程就更方便,例如,对于直角三角形斜边长度公式C = Va2 + b2用函数化的格式表示:c= sqrt( add(mult(a, a), mult(b, b))) ;用运算符的格式表示更简洁易读:c= sqrt(a* a + b * b);

18.2如何重载运算符2、操作数个数不变,运算符的操作数是规定好了的。,例如,乘法和加法是双目运算符++是单目运算符,等等。如果改变运算符的操作数个数,将带来编译器错误
2、操作数个数不变 • 运算符的操作数是规定好了的。 • 例如,乘法和加法是双目运算符。 • ++是单目运算符,等等。 • 如果改变运算符的操作数个数,将带来编译 器错误