【C++ Primer Plus习题】11.7

大家好,这里是国中之林!
❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看←

问题:

这里是引用
在这里插入图片描述

解答:
main.cpp

#include <iostream>
#include "complex0.h"
using namespace std;

int main()
{
	complex a(3.0, 4.0);
	complex c;
	cout << "请输入一个复数(q结束):" << endl;
	while (cin>>c)
	{
		cout << "c is " << c << endl;
		cout << "c的共轭为:" << ~c << endl;
		cout << "a is " << a << endl;
		cout << "a+c is " << a + c << endl;
		cout << "a-c is " << a - c << endl;
		cout << "a *c is " << a * c << endl;
		cout << "2 *c is " << 2 * c << endl;
		cout << "请输入一个负数(q结束):" << endl;
	}
	cout << "Done!" << endl;

	return 0;
}

complex0.h

#pragma once
#include <iostream>
using namespace std;
class complex
{
private:
	double real;
	double imaginary;

public:
	complex();
	complex(double real, double imaginary);

	complex operator~();
	complex operator+(const complex& c);
	complex operator-(const complex& c);
	complex operator*(const complex& c);

	friend complex operator*(double n, const complex& c2);
	friend istream& operator>>(istream& is, complex& c);
	friend ostream& operator<<(ostream& os, const complex& c);
};


complex0.cpp

#include "complex0.h"
complex::complex()
{
	real = imaginary = 0.0;
}
complex::complex(double real, double imaginary)
{
	this->real = real;
	this->imaginary = imaginary;
}

complex complex::operator~()
{
	complex temp;
	temp.real = real;
	temp.imaginary = -imaginary;
	return temp;
}
complex complex::operator+(const complex& c)
{
	complex temp;
	temp.real = real + c.real;
	temp.imaginary = imaginary + c.imaginary;
	return temp;
}
complex complex::operator-(const complex& c)
{
	complex temp;
	temp.real = real - c.real;
	temp.imaginary = imaginary - c.imaginary;
	return temp;
}
complex complex::operator*(const complex& c)
{
	complex temp;
	temp.real = real * c.real - imaginary * c.imaginary;
	temp.imaginary = real * c.imaginary + imaginary * c.real;
	return temp;
}

complex operator*(double n, const complex& c2)
{
	complex temp;
	temp.real = n * c2.real;
	temp.imaginary = n * c2.imaginary;
	return temp;
}
istream& operator>>(istream& is, complex& c)
{
	is >> c.real >> c.imaginary;
	return is;
}
ostream& operator<<(ostream& os, const complex& c)
{
	os << "(" << c.real << "," << c.imaginary << "i)";
	return os;
}

运行结果:
在这里插入图片描述

考查点:

  • 运算符重载
  • 友元

注意:

  • 输入输出可以记
    在这里插入图片描述

2024年9月5日21:23:25

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值