c++复数类问题

dixuexiongyingss 2012-12-01 10:59:56
用c++我写了个CComplexNumber(复数类),在主函数内我写了CComplexNumber CComplexNumber1 = 2这个语句主要是为了让对象的实部等于2,虚部等于0,我该怎么做,该重载哪个函数或运算符,请各位大侠多多指教,先行谢过啦!
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2012-12-02
  • 打赏
  • 举报
回复
这个问题的回答可大可小...参考下面的代码:

#include <iostream>
using namespace std;

class CComplexNumber
{
private:
	double realPart;
	double imaginaryPart;

public:
	CComplexNumber()
	{
		realPart = 0.0;
		imaginaryPart = 0.0;
	}

	CComplexNumber(int realPart)	// 隐式类型转换
	{
		this->realPart = (double)realPart;
		imaginaryPart = 0.0;
	}

	CComplexNumber(double realPart, double imaginaryPart)
	{
		this->realPart = realPart;
		this->imaginaryPart = imaginaryPart;
	}

	CComplexNumber operator+(CComplexNumber& aComplexNumber)
	{
		CComplexNumber temp;
		temp.realPart = realPart + aComplexNumber.realPart;
		temp.imaginaryPart = imaginaryPart + aComplexNumber.imaginaryPart;
		return temp;
	}

	 friend ostream& operator << (ostream&, const CComplexNumber&);
};

ostream& operator << (ostream& os, const CComplexNumber& aComplexNumber)
{
	if(aComplexNumber.imaginaryPart == 0.0)
	{
		os << aComplexNumber.realPart;
	}
	else if(aComplexNumber.imaginaryPart > 0.0)
	{
		os << aComplexNumber.realPart << "+" << aComplexNumber.imaginaryPart << "i";
	}
	else
	{
		os << aComplexNumber.realPart << aComplexNumber.imaginaryPart << "i";
	}

	return os;
}

int main(int argc, char** argv)
{
	CComplexNumber CComplexNumber1 = 2;
	CComplexNumber CComplexNumber2(1.1, 2.2);

	cout << CComplexNumber1 + CComplexNumber2 << endl;

	return 0;
}

关于隐式类型转换可以参考: 隐式类型转换和explicit关键字的作用
dixuexiongyingss 2012-12-02
  • 打赏
  • 举报
回复
已经解决了,非常感谢各位关注并解决这个问题。
dixuexiongyingss 2012-12-02
  • 打赏
  • 举报
回复
还有一个问题就是在main函数里我又写了一句:int i = CComplexNumber1;这句话该怎么做才能编译过呢?希望大家再次赐教,感谢2楼提供的方法,非常正确,谢谢!!!
yisikaipu 2012-12-01
  • 打赏
  • 举报
回复
标准库直接就有复数类
#include <complex>
using namespace std;

int main()
{
	complex<double> c1(2,0);
	return 0;
}

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧