运算符重载与交换律 Complex operator+(int &i,Complex &c) return Complex(i+c.real,c.imag);} 在运算表达式中操作数与函数参数类型必须匹配。 c3-i+c2; 正确,类型匹配 c3=c2+i; /错误,类型不匹配 如果希望适用交换律,则应再重载一次运算符 “+”: Complex operator+(Complex &c,int &i) return Complex(i+c.real,c.imag); 故一般将双目运算符重载为友元函数。 2017年4月26日12时 0务 第10章运算符重载 BACK NEXT
HOME Complex operator+(int &i, Complex &c) {return Complex(i+c.real,c.imag);} 在运算表达式中操作数与函数参数类型必须匹配。 c3=i+c2; //正确,类型匹配 c3=c2+i; //错误,类型不匹配 如果希望适用交换律,则应再重载一次运算符“+”: Complex operator+(Complex &c, int &i) {return Complex(i+c.real,c.imag);} 故一般将双目运算符重载为友元函数。 2017年4月26日12时 15分 第10章 运算符重载 17
C++规定:赋值运算符、下标运算符、函数调用运算 符等必须定义为类的成员函数。 流插入“<<”和流提取运算符“>”、 类型转换运算 符则不能定义为类的成员函数。 说明:有的C++编译系统(如Visual C++6.0)没有完 全实现C++标准,它所提供不带后缀.h的头文件不支 持把成员函数重载为友元函数。但带后缀.h的头文件 可以支持此项功能: #include <iostream.h> 2017年4月26日12时 第10章运算符重载 HO 18 15分 BACK NEXT
HOME C++规定:赋值运算符、下标运算符、函数调用运算 符等必须定义为类的成员函数。 流插入“<<”和流提取运算符“>>” 、类型转换运算 符则不能定义为类的成员函数。 说明: 有的C++编译系统(如Visual C++ 6.0)没有完 全实现C++标准,它所提供不带后缀.h的头文件不支 持把成员函数重载为友元函数。但带后缀.h的头文件 可以支持此项功能: #include <iostream.h> 2017年4月26日12时 15分 第10章 运算符重载 18
10.5重载双目运算符 Binocular Operator Overloading /例10.4重载String类双目运算符 ∥(I)建立String类 #include <iostream> using namespace std; class String { public: String(){p=NULL;} /默认构造函数 String(char *str); /构造函数 void display(); private: char *p; 2017年4月26日12时 第10章运算符重载 19 H0务 BACK NEXT
HOME //例10.4 重载String 类双目运算符 // (1) 建立String类 #include <iostream> using namespace std; class String { public: String( ){p=NULL;} //默认构造函数 String(char *str); //构造函数 void display( ); private: char *p; }; 2017年4月26日12时 15分 第10章 运算符重载 19
String:String(char *str) /定义构造函数 p=str;} ∥使p指向实参字符串 void String::display() /输出p所指向的字符串 {cout长<p} int mainO) { String string1("Hello"),string2("Book"); string1.display(); cout<<endl; string2.display(); return 0; 2017年4月26日12时 H0务 第10章运算符重载 20 BACK NEXT
HOME String::String(char *str) //定义构造函数 {p=str;} //使p指向实参字符串 void String::display( ) //输出p所指向的字符串 {cout<<p;} int main( ) { String string1("Hello"),string2("Book"); string1.display( ); cout<<endl; string2.display( ); return 0; } 2017年4月26日12时 15分 第10章 运算符重载 20