IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 实验八—运算符重载 -> 正文阅读

[C++知识库]实验八—运算符重载

实验目的:

1.掌握C++语言多态性的基本概念
2.掌握运算符重载函数的声明和定义方法

运算符重载:

1.运算符重载是通过创建运算符重载函数来实现的,运算符重载函数可以是在类外定义的普通函数,也可以是类的成员函数或友元函数。
C++为运算符重载提供了一种方法,即在进行运算符重载时,必须定义一个运算符重载函数,其名字为operator,后随一个要重载的运算符。

2.运算符重载的函数格式:
在这里插入图片描述
3.C++中绝大多数的运算符允许重载,不能重载的运算符有以下几个:
. 成员访问运算符;
.* 成员指针访问运算符;
:: 作用域运算符;
Sizeof 长度运算符;
?: 条件运算符;
4.C++语言只能已有的运算符进行重载,不允许用户自己定义运算符;

实验程序:

1.编写一个程序,实现两个复数的相加,类外定义运算符重载函数;

#include "sy7.h"

using namespace std;

class Complex {
public:
	double real;
	double imag;
	Complex(double r=0, double i=0)
	{
		real = r;
		imag = i;
	}
};
Complex operator+(Complex co1, Complex co2)
{
	Complex temp;
	temp.real = co1.real + co2.real;
	temp.imag = co1.imag + co2.imag;
	return temp;
}

int main()
{
	Complex com1(1.1, 2.2), com2(3.3, 4.4), total1, total2;
	total1 = operator+(com1, com2);
	cout << "real1=" << total1.real << " " << "imag1=" << total1.imag << endl;
	total2 = com1 + com2;
	cout << "real2=" << total2.real << " " << "imag2=" << total2.imag << endl;
	return 0;
}

在这里插入图片描述

2.编写一个程序,实现两个复数的相加,友元运算符重载函数。



#include "sy7.h"

using namespace std;
class Complex {
	double real;
	double imag;
public:
	Complex(double r = 0, double i = 0)
	{
		real = r;
		imag = i;
	}
	void print();
	friend Complex operator+(Complex co1, Complex co2);
};

Complex operator+(Complex co1, Complex co2)
{
	Complex temp;
	temp.real = co1.real + co2.real;
	temp.imag = co1.imag + co2.imag;
	return temp;
}

void Complex::print()
{
	cout << "total real=" << real << " " << "total imag=" << imag << endl;
}

int main()
{
	Complex com1(1.1, 2.2), com2(3.3, 4.4), total1;
	total1 = com1 + com2;
	total1.print();
	return 0;
}


在这里插入图片描述
3.编写一个程序,实现两个复数的相加,成员运算符重载函数。
对双目运算符而言,成员运算符重载函数的形参表中仅有一个参数,它作为运算符的右操作数。
另一个操作数(左操作数)是隐含的,是该类的当前对象,他是通过this指针隐含传递给函数。

#include "sy7.h"
using namespace std;

class Complex {
	double real;
	double imag;
public:
	Complex(double r = 0.0, double i = 0.0)
	{
		real = r;
		imag = i;
	}
	void print();
	Complex operator+(Complex c);
};

Complex Complex::operator+(Complex c)
{
	Complex temp;
	temp.real = real + c.real;
	temp.imag = imag + c.imag;
	return temp;
}

void Complex::print()
{
	cout << "total real=" << real << " " << "total imag=" << imag << endl;
}

int main()
{
	Complex com1(2.3, 4.6), com2(3.6, 2.8), total1;
	total1 = com1 + com2;
	total1.print();
	return 0;
}


在这里插入图片描述

实验内容 :

编写一个程序,实现两个复数的乘法:

#include "sy7.h"

using namespace std;

class Complex {
	double real;
	double imag;
public:
	Complex(double r = 0.0, double i = 0.0)
	{
		real = r;
		imag = i;
	}
	void print();

	friend Complex operator*(Complex &a, Complex &b);
};

Complex operator*(Complex &a, Complex &b)
{
	Complex temp;
	temp.real = a.real * b.real-a.imag*b.imag;
	temp.imag = a.real * b.imag+a.imag*b.real;
	return temp;
}

void Complex::print()
{
	cout << real;
	if (imag > 0)
	{
		cout << "+";
	}
	if (imag != 0)
	{
		cout << imag << 'i' << endl;
	}
	//cout << "total real=" << real << " " << "total imag=" << imag << endl;
}

int main()
{
	Complex com1(1.1, 2.2), com2(3.3, 4.4), total1;
	total1 = com1 * com2;
	total1.print();
	return 0;
}



在这里插入图片描述
当用友元函数重载双目运算符时,两个操作数都要传递给运算符重载函数。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:45:21  更:2021-12-14 15:47:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:07:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码