第10章运算符重载 10.1什么是运算符重载 10.2运算符重载的方法 10.3重载运算符的规则 10.4运算符重载函数作为类成员函数和友元函数 10.5重载双目运算符 10.6重载单目运算符 10.7重载流插入运算符和流提取运算符 10.8不同类型数据间的转换
第10章 运算符重载 10.1 什么是运算符重载 10.2 运算符重载的方法 10.3 重载运算符的规则 10.4 运算符重载函数作为类成员函数和友元函数 10.5 重载双目运算符 10.6 重载单目运算符 10.7 重载流插入运算符和流提取运算符 10.8 不同类型数据间的转换
10.1什么是运算符重载 函数重载就是对一个已有的函数赋予新的含义, 使之实现新功能 运算符重载就是给运算符赋予新的功能。 譬如,定义一个专门的函数,来实现用“+” 号进行两个复数的相加
10.1 什么是运算符重载 函数重载就是对一个已有的函数赋予新的含义, 使之实现新功能 运算符重载就是给运算符赋予新的功能。 譬如,定义一个专门的函数,来实现用“+” 号进行两个复数的相加
例10.1通过函数来实现复数相加。 #include <iostream> using namespace std; 定义Complex类 class Complex public: 定义构造函数 Complex(){real-0;imag-0;) Complex(double r,double i) 构造函数重载 {real=r;imag-i;} Complex complex add(Complex &c2); void display()左 声明复数 相加函数 private: 声明输出函数 double real; double imag;
例10.1 通过函数来实现复数相加。 #include <iostream> using namespace std; class Complex {public: Complex( ){real=0;imag=0;} Complex(double r,double i) {real=r;imag=i;} Complex complex_add(Complex &c2); void display( ); private: double real; double imag; }; 定义Complex类 定义构造函数 构造函数重载 声明复数 相加函数 声明输出函数
Complex Complex:complex add(Complex &c2) {Complex c; c.real-=real+c2.real; 运行结果如下: c.imag-=imag+c2.imag; c1=(3+4i) return c; c2=(5-10i) c1+c2=(8,-6i) void Complex:display() {cout<<"("<<real<<","<<imag<<"i)"<<endl;} int main() 定义3个复数对象 {Complex c1(3,4),c2(5,-10),c3; c3=c1.complex add(c2); 调用复数相加函数 cout<<"cl=",cl.display())方 cout<<"c2-"c2.display(), 输出cl、c2、c3的值 cout<<"c1+c2=";c3.display() return 0;
Complex Complex∷complex_add(Complex &c2) {Complex c; c.real=real+c2.real; c.imag=imag+c2.imag; return c; } void Complex∷display( ) {cout<<″(″<<real<<″,″<<imag<<″i)″<<endl;} int main( ) {Complex c1(3,4),c2(5,-10),c3; c3=c1.complex_add(c2); cout<<″c1=″; c1.display( ); cout<<″c2=″; c2.display( ); cout<<″c1+c2=″; c3.display( ); return 0; } 运行结果如下: c1=(3+4i) c2=(5-10i) c1+c2=(8,-6i) 定义3个复数对象 调用复数相加函数 输出c1、c2、c3的值
例1:一个日期类对象加上若干天数,应该仍 是日期 Date d1(2001,12,1): 即运算:d1=d1+10;是合理的 应能得到:2001/12/11 8 C++的语法问题:“+”运算的操作数是什么? 定义了对内部 int “十 数据类型进行算术运算 char float、double
例1:一个日期类对象加上若干天数,应该仍 是日期 Date d1(2001,12,1); 即运算: d1=d1+10; 是合理的 C++的语法问题: “+”运算的操作数是什么? “+” int char float、double 数据类型进行算术运算 定义了对内部 应能得到:2001/12/11