正文

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;} 运行结果如下图:    

阅读(4609) | 评论(0)


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

评论

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