正文

C++学习笔记(一)使用友元重载运算符2006-03-03 22:01:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/clever101/10717.html

分享到:

 

       C++的多态性的一个重要体现是运算符重载。下面我以复数运算为例说明友元重载运算符。

      首先在VC上建一个简单的win32控制台程序。程序源码如下:

class ComplexNum
{
public:
 ComplexNum();     // 构造函数
 ComplexNum(float Vreal,float Vimage);    // 重载构造函数
 friend ComplexNum operator + (ComplexNum p1,ComplexNum p2);  //重载+运算符
 friend ComplexNum operator - (ComplexNum p1,ComplexNum p2);  //重载-运算符
 friend ComplexNum operator * (ComplexNum p1,ComplexNum p2);  //重载*运算符
 friend ComplexNum operator / (ComplexNum p1,ComplexNum p2);  //重载/运算符
 void PrintComplexNum();                                  // 打印复数
private:
 float real;                      // 复数的实部
 float image;                     //复数的虚部
};

#include "stdafx.h"
#include "ComplexNum.h"
#include <iostream.h>

ComplexNum::ComplexNum()     
     {
      real=0.0f;
      image=0.0f;
     }

ComplexNum::ComplexNum(float Vreal,float Vimage)
     {
  real=Vreal;
  image=Vimage;
     }
ComplexNum operator + (ComplexNum p1,ComplexNum p2)
{
 ComplexNum p;
 p.real=p1.real+p2.real;
 p.image=p1.image+p2.image;
 return p;
}

ComplexNum operator - (ComplexNum p1,ComplexNum p2)
{
 ComplexNum p;
 p.real=p1.real-p2.real;
 p.image=p1.image-p2.image;
 return p;
}

ComplexNum operator * (ComplexNum p1,ComplexNum p2)
{
 ComplexNum p;
 p.real = (p1.real) * (p2.real) - (p1.image) * (p2.image);
 p.image = (p1.real) * (p2.image) + (p1.image) * (p2.real);
    return p;
}

ComplexNum operator / (ComplexNum p1,ComplexNum p2)
{
 ComplexNum p;
 p2.image=-(p2.image);
 p = p1 * p2;
 float temp = (p2.image) * (p2.image) + (p2.real) * (p2.real);
 p.real = p.real/temp;
 p.image = p.image/temp;
 return p;
}

void ComplexNum::PrintComplexNum()
{
 cout<<real<<"+"<<image<<"i\n";
}

int main(int argc, char* argv[])
{
    ComplexNum c1(2.3f,4.6f);
 ComplexNum c2(3.6f,2.8f);
 ComplexNum c3;
 c1.PrintComplexNum();
 c2.PrintComplexNum();
 c3 = c1 + c2;
 c3.PrintComplexNum();
 c3=c1 * c2;
 c3.PrintComplexNum();
 c3=c1-c2;
 c3.PrintComplexNum();
 c3=c1/c2;
 c3.PrintComplexNum();
 return 0;
}

运行结果如下图:


 

 

阅读(4552) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册