C++语言程序设计 问题举例 复数的运算 算符重 class complex∥复数类声明 publIc 载{ complex( double r=0.0, double i=0.0)∥构造函数 real=r; imag=i; void display;∥显示复数的值 complex add( complex c2);∥成员函数 private double real: double imag; x
C++语言程序设计 6 问题举例——复数的运算 class complex //复数类声明 { public: complex(double r=0.0,double i=0.0) //构造函数 { real=r; imag=i; } void display(); //显示复数的值 complex add(complex c2); //成员函数 private: double real; double imag; }; 运 算 符 重 载
C++语言程序设计 complex complex add(complex C2) complex c, creal=c2 realtreal: C imag=c2 imag+imag; return complex(c real, C imag) int main()∥主函数 complex c1(5,4)c2(2,10)c3; C3=C1.add(c2); return 0: x
C++语言程序设计 7 complex complex::add(complex c2) { complex c; c.real=c2.real+real; c.imag=c2.imag+imag; return complex(c.real,c.imag); } int main() //主函数 { complex c1(5,4),c2(2,10),c3; c3=c1.add(c2) ; return 0; }
C++语言程序设计 问题举例 复数的运算 算。用“+”、“能够实现复数的加减运 算吗? 重 载 complex c1(5,4)c2(2,10),c3; c3=c1+c2; ●实现复数加减运算的方法 重载“+”、“运算符, x
C++语言程序设计 8 问题举例——复数的运算 ⚫ 用“+”、“-”能够实现复数的加减运 算吗? complex c1(5,4),c2(2,10),c3; c3=c1 + c2; ⚫ 实现复数加减运算的方法 ——重载“+”、“-”运算符 运 算 符 重 载
C++语言程序设计 complex complex: operator +(complex c2) complex C) creal=c2.realtreal C.imagc2 imag+imag return complex(c real, c imag); int main()∥主函数 complex c1(5,4)c2(2,10)c3; c3=c1+c2;相当于c1. operator+(c2) return 0;
C++语言程序设计 9 complex complex:: operator +(complex c2) { complex c; c.real=c2.real+real; c.imag=c2.imag+imag; return complex(c.real,c.imag); } int main() //主函数 { complex c1(5,4),c2(2,10),c3; c3=c1+c2; //相当于c1.operator+(c2) return 0; }
C++语言程序设计 运算符重载的奥质 算。运算符重载是对已有的运算符赋予多 符重含义,实质就是函数重载。 重。实现机制 载将指定的运算表达式转化为对运算符函 数的调用,运算对象转化为运算符函数 的实参。 编译系统对重载运算符的选择,遵循函 数面找的用则据实的关x
C++语言程序设计 10 运算符重载的实质 ⚫ 运算符重载是对已有的运算符赋予多 重含义,实质就是函数重载 。 ⚫ 实现机制 – 将指定的运算表达式转化为对运算符函 数的调用,运算对象转化为运算符函数 的实参。 – 编译系统对重载运算符的选择,遵循函 数重载的选择原则。(根据实参的类型 来确定需要调用的函数) 运 算 符 重 载