如果喜欢可以关注我
本文是我真正意义上第一个c++程序,在此期间查阅了大量的资料,实现了一个complex类,实现了类模板,水平有限,如有错误请私信我。
本程序实现的功能:
1. + - * / 重载函数
2. += -= *= /= 重载函数
3. 赋值重载函数
4.判断是否相等,是否不等的重载函数
5.取正,取负的重载函数
6.get_real ,get_imag 成员函数(成员函数互为友元)
7.友元函数,this指针的使用。
8.complex类的显示
因为程序比较简单,我都做了注释,就不详细展开,如有问题请私信我。
/* 本程序的注释代表仅代表个人理解,不一定完全正确,全是我亲自敲上去的,如有错误请联系我。 */
#ifndef __COMPLEX_B_H__
#define __COMPLEX_B_H__
template<typename T> //定义模板 typename is T
class complex /* 复数类 */
{
public:
complex(T r = 0, T i =0) : re(r), im(i)
{
;
}
complex& operator += (const complex&); //成员函数
complex& operator -= (const complex&);
complex& operator *= (const complex&);
complex& operator /= (const complex&);
complex& operator = (const complex&); //赋值运算符重载函数
T real() const { return re; }
T imag() const { return im; }
private:
T re, im;
friend complex& __doadd(complex *, const complex&);
friend complex& __dosub(complex *, const complex&);
friend complex& __domul(complex *, const complex&);
friend complex& __dodiv(complex *, const complex&);
friend complex& __doequ(complex*, const complex&); //赋值实际运算函数
};
/************ 全局函数声明区 ***************/
double real(const complex<double>& x); //取对象的实部(全局函数),不用在类外专门定义传参数
double imag(const complex<double>& x); //取对象的虚部(全局函数),不用在类外专门定义传参数
inline complex<double>& __doequ(complex<double>* ths, const complex<double>& r); //赋值实际运算函数
/**************************************************************************************************************************************************************/
/************ += -= *= /= ***************************************************************************************************************************/
/* 复数 += 的实际运算函数 */
inline complex<double>&
__doadd(complex<double>* ths, const complex<double>& r)
{
ths->re += r.re;
ths->im += r.im;
return *ths;
}
/* 函数名 ooerator+= 运算