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、操作数个数不变 • 运算符的操作数是规定好了的。 • 例如,乘法和加法是双目运算符。 • ++是单目运算符,等等。 • 如果改变运算符的操作数个数,将带来编译 器错误