求解。。C++程序分析

[复制链接]
查看11 | 回复3 | 2011-2-26 10:57:31 | 显示全部楼层 |阅读模式
#include
using namespace std;
class complex
{
public:
complex(double r=0,double i=0):re(r),im(i){}
double real() const {return re;}
double imag() const {return im;}
complex operator+(complex c) const
{return complex(re+c.re,im+c.im);}
private:
double re,im;
};
int main()
{
complex a=complex(1,1)+complex(5);
cout<<a.real()<<'+'<<a.imag()<<'i'<<endl;
return 0;
}
为什么运行结果为6+li
6和l是怎么来的??

回复

使用道具 举报

千问 | 2011-2-26 10:57:31 | 显示全部楼层
(1)1+i与5相加=6+i(2)C++复数类,中间分别将实数和虚数作为成员变量构造函数complex(double r=0,double i=0),允许没有参数,1个参数和2个参数没有参数代表0(r=0,i=0),1个参数就是只有实数,2个参数表示既有实数也有虚数。这点参考C++语法complex(1,1)代表1+i,complex(5)代表5(3)相加实现主要是操作符重载:complex operator+(complex c) const {return complex(re+c.re,im+c.im);}是将实数和虚数分别相加(4)输出时先输出实数,再输出+号,最后是虚数和i得到6+1i
回复

使用道具 举报

千问 | 2011-2-26 10:57:31 | 显示全部楼层
很简单啊,complex(1,1)实际上就是1+1i,而complex(5)是5+0i=5所以:complex(1,1)+complex(5)=(1+1i)+(5+0i)=6+1i关键是complex(5)的值,构造函数complex(double r=0,double i=0)对r和i都带有默认值,complex(5)就是指给第一个参数r赋值5
回复

使用道具 举报

千问 | 2011-2-26 10:57:31 | 显示全部楼层
(1+1i)+(5+0i)=6+1i,是1不是l!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行