操作符重载
操作符重载
主要内容 ■操作符重载概述 ▣双目操作符重载 ■单目操作符重载 些特殊操作符的重载
主要内容 ◼ 操作符重载概述 ◼ 双目操作符重载 ◼ 单目操作符重载 ◼ 一些特殊操作符的重载
操作符重载的需要性 C++语言本身没有提供复数类型,可通过定义一个类来实现: class Complex /复数类定义 {public: Complex(double r=0.0,double i=0.0) real=r;imag=i; void display()const cout <real <<'+'<imag <<'i'; private: double real; double imag; }; 如何实现两个复数(类型为Complex)相加?
操作符重载的需要性 ◼ C++语言本身没有提供复数类型,可通过定义一个类来实现: class Complex //复数类定义 {public: Complex(double r=0.0,double i=0.0) { real=r; imag=i; } void display() const { cout << real << '+' << imag << 'i'; } ...... private: double real; double imag; }; ◼ 如何实现两个复数(类型为Complex)相加?
■ 一种方案:为Complex类定义一个成员函数add, 例如: class Complex public: Complex add(const Complex&x)const Complex temp; temp.real real+x.real; temp.imagimag+x.imag; return temp; Complex a(1.0,2.0),b(3.0,4.0),c; c a.add(b);
◼ 一种方案:为Complex类定义一个成员函数add, 例如: class Complex { public: Complex add(const Complex& x) const { Complex temp; temp.real = real+x.real; temp.imag = imag+x.imag; return temp; } …… }; …… Complex a(1.0,2.0),b(3.0,4.0),c; c = a.add(b);
■另一种方案:定义一个全局函数,例如: class Complex/复数类定义 { friend Complex add(const Complex&x1,const Complex&x2); 9 Complex add(const Complex&x1,const Complex&x2) Complex temp; temp.real x1.real+x2.real; temp.imag x1.imag+x2.imag; return temp; } Complex a(1.0,2.0),b(3.0,4.0),c c add(a,b);
◼ 另一种方案:定义一个全局函数,例如: class Complex //复数类定义 { ...... friend Complex add(const Complex& x1, const Complex& x2); }; Complex add(const Complex& x1, const Complex& x2) { Complex temp; temp.real = x1.real+x2.real; temp.imag = x1.imag+x2.imag; return temp; } …… Complex a(1.0,2.0),b(3.0,4.0),c; c = add(a,b);