运算符重载案例

来源:互联网 发布:西师大知行学院咋样 编辑:程序博客网 时间:2024/06/08 18:09
不知道怎么说,直接上代码,边看边说/可以先从主函数看起。运算符重载主要就是3点,一个当然是运算符重载的编写,另一个就是类的构造函数,还有就是this指针。注意这亮点就行了。还有就是,进来把重载写成面向对象的形式,不要披着面向对象的皮写着面向过程的类成员函数。

这段函数可以直接复制就跑的起来,在这里看不清楚的可以复制到编译器里看。需要注意的就是复制到cpp文件里,别复制到.c文件。

#include

usingnamespacestd;


//定义了一个复数类 

classcomplex

{

public:

   inta;

   intb;

public:

//这里就是运算符重载了。。不过如果一时间看不懂可以先从后面的主函数看起。

   complexoperator+(complex&c)

   {

       complextemp(this->a+c.a,this->b+c.b);

       returntemp;

   }

   complexoperator-(complex&c)

   {

       complextemp(this->a-c.a,this->b-c.b);

       returntemp;

   }

   complexoperator*(complex&c)

   {

       complextemp(this->a*c.a-this->b*c.b,this->a*c.b+c.a*this->b);

       returntemp;

   }

   complexoperator/(complex&c)

   {

       complextemp((this->a*c.a-this->b*c.b)/ (c.a*c.a+c.b*c.b),(this->a*c.b+c.a*this->b)/ (c.a*c.a+c.b*c.b));

       returntemp;

   }

   complexdot(complex&c)

   {

       complextemp(this->a*c.a,this->b*c.b);

       returntemp;

   }

public:

//这里是默认的构造函数。必须要有哦。

   complex(inta= 0,intb=0)

   {

       this->a=a;

       this->b=b;

   }

//析构函数

   ~complex()

   {

 

   }

 

public:

   voidprintCom()

   {

       cout<<a<<" +" <<b<<"i" <<endl;

   }

 

private:

};

 

voidmain()

{

   cout<<"程序开始"<<endl;

//这里定义了两个复数类对象,调用了类的默认构造函数。如果是函数传参的话会调用拷贝构造函数。

   complexc1(1,2), c2(1,-2);

   cout<<"c1c2的值"<<endl;

   c1.printCom();

   c2.printCom();

   //

   cout<<""<<endl;

   complexc_test=c1+c2;

   c_test.printCom();

   //

   cout<<""<<endl;

    c_test=c2-c1;

   c_test.printCom();

   //

   cout<<""<<endl;

   c_test=c2*c1;

   c_test.printCom();

   //

   cout<<""<<endl;

   c_test=c1/c2;

   c_test.printCom();

   //内积

   cout<<"内积"<<endl;

   c_test=c1.dot(c2);

   c_test.printCom();

 

 

   cout<<"程序结束"<<endl;

   

 

}


原创粉丝点击