Complex 类的基本函数

//  Complex 类的基本函数

#include<iostream>
using namespace std;
class Complex
{
public :
	Complex(double real=1.0,double image=2.0)//构造函数  (有参) 调用2次拷贝构造
	{
		_real=real;
		_image=image;
	}
	Complex()  //构造函数  (无参)
	{
	      _real=1.0;
	      _image=2.0;
	}
	亦可写成:
	Complex(double real=1.0,double image=2.0)//构造函数  初始化列表进行初始化
	           :_real(real)                  // 调用1次拷贝构造
	           ,_image(image) 
	{}

	Complex(const Complex& c)//拷贝构造函数  参数必须引用传参
	{
		_real=c._real;
		_image=c._image;
	}

	~Complex()//析构函数  无参数返回值 清理
	{
		cout<<"~Complex()"<<endl;
	}

	Complex& opertator=(const Complex& c) //赋值运算符的重载  =
	{
	       // 方法一:               //     非 const   仅 ---->   const
	        if(this != &c)
	        {
	                _real=c._real;
	                _image=c._image;
	        }
	        return *this;
	       // 方法二:
	       // if(this != &c)
	       // {
	       //        swap(_real,c._real);
	       //        swap(_image,c._image);
	       // }
	       // return *this;
	        
	}
	Complex& opertator+(const Complex& c)  //   +
	{
	       Complex tmp;
	       tmp._real=_real+c._real;
	       tmp._image=_image+c._image;
	       return tmp;
	}
	Complex& opertator-(const Complex& c)   //   -
	{
	       Complex tmp;
	       tmp._real=_real-c._real;
	       tmp._image=_image-c._image;
	       return tmp;
	}
	Complex operator*(Complex& c)          //  *
	{
		Complex tmp;
		tmp._real=_real*c._real;
		tmp._image=_image*c._image;
		return tmp;
	}
	Complex operator/(Complex& c)          //  /
	{
		Complex tmp;
		tmp._real=_real/c._real;
		tmp._image=_image/c._image;
		return tmp;
	}

	Complex& opertator++(int)    //   后置++
	{
	       Complex tmp(*this);
	       _real++;
	       _image++;
	       return tmp; //不能返回引用
	} 
	Complex& opertator++()       //   前置++
	{
	       _real=_real+1;
	       _image=_image+1;
	       return *this;
	}

	Complex operator --(int)      //   后置 --
	{
		Complex tmp(*this);
		_real--;
		_image--;
		return tmp;
	}
	Complex& operator --()       //   前置 --
	{
		_real=_real-1;
		_image=_image-1;
		return *this;
	}

public:
        bool operator>(const Complex& c)
        {
                return _real>c._real;
                return _image>c._image;
        }
        Complex* opertator&()
        {
                return *this;
        }

protected :
	double _real ;
	double _image;
};

void Test1()
{
	Complex c1(3.0,6.0);
	c1.Display1();
	c1.Display2();

	Complex c2(c1);
	c2.Display1();
	c2.Display2();

	Complex ret1=c1+c2;
	ret1.Display1();

	Complex ret2=c1-c2;
	ret2.Display1();

	Complex ret3=c1*c2;
	ret3.Display1();

	Complex ret4=c1/c2;
	ret4.Display1();

	(c1++).Display1();
	(++c1).Display1();
	(c1--).Display1();
	(--c1).Display1();

	(c1+=c2).Display1();
	(c1-=c2).Display1();
}

int main()
{
	Test1();

	return 0;
}
时间: 2024-10-20 07:59:50

Complex 类的基本函数的相关文章

std::complex类conj

std::conj(std::complex) std::conj(std::complex)用来计算complex的共轭部分,通过相反虚部的标识. example: 1 #include <iostream> 2 #include <complex> 3 4 int main() 5 { 6 std::complex<double> z(1,2); 7 std::cout << "The conjugate of " <<

设计、定义并实现Complex类

实验结论 Complex类 Code: #include<iostream> #include<cmath> #include<cstdlib> using namespace std; class Complex { public: Complex(double newr = 0, double newi = 0); Complex(Complex &c1); void add(Complex c1); void show(); double mod(); p

如何在派生类中实现类的基本函数

基类的构造函数.析构函数.赋值函数都不能被派生类继承.如果类之间存在继承 关系,在编写上述基本函数时应注意以下事项: 派生类的构造函数应在其初始化表里调用基类的构造函数. 基类与派生类的析构函数应该为虚(即加 virtual 关键字). 1 #include <iostream> 2 3 /* run this program using the console pauser or add your own getch, system("pause") or input l

Complex 类的实现

编写复数类Complex,使得代码能够工作: 代码: #include<iostream> #include<cmath> using namespace std; class Complex{ public: Complex(double newrl=0,double newim=0) ;//默认值不能丢. Complex(Complex &c2); void add(Complex c2); void show(); double qumo(); private: do

课堂小练习: 设计、定义并实现complex类

#include<iostream> #include<cmath> using namespace std; class complex{ public: complex(double real0=0,double imaginary0=0); complex(complex &p); void add(complex); void qiumo(); void show(); private: double real; double imaginary; }; compl

complex类

#include<iostream> #include<cmath> using namespace std; class complex{ public: complex(double a,double b=0); complex(complex &p); void show(); void madd(complex q); double mod(); private: double zhen; double xu; }; complex::complex(double

课堂小练习(complex类)

定义一个复数类Complex,使得下面的代码能够工作: Complex c1(3,5);     //用复数3+5i初始化c1: Compex c2=4.5;      //用实数4.5初始化c2 c1.add(c2);              //将c1与c2相加,结果保存在c1中 c1.show();               //将c1输出(这时的结果应该是7.5+5i) cout<<c1.mod()      //c1.mod()对c1进行取模运算 1 #include <i

complex类 序列化时 IsRequired = true 问题

最近项目使用xpo作为数据底层, 需要在webservice中通信(传参和返回)直接使用xpo,则需要改造xpo类,自己实现IXmlSerializable接口. webservice客户端引用后, 调用时候发对象中的字符串类型的值不能为空,因为引用webservice生成的类字段上加了一个属性 [System.Runtime.Serialization.DataMemberAttribute(EmitDefaultValue=false, IsRequired=true)] 导致字段不能为空,

Complex 类

#include<iostream> #include<math.h> using namespace std; class Complex { public: Complex(double a, double b); Complex(double a) { real = a; i = 0; } Complex(Complex&p); void add(Complex a); void show(); double mod(); private: double real;