栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

上机实验7 运算符重载

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

上机实验7 运算符重载

实验目的

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

实验内容

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

多态性

在面向对象方法中,所谓多态性就是不同对象收到相同消息,产生不同的行为。在C++程序设计中,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,这样就可以用同一个函数名调用不同内容的函数。

运算符重载函数

系统已定义的运算符不适用于新的自定义数据类型,为了解决这一问题,C++允许运算符的重载。
运算符的重载是通过创建运算符重载函数来实现的;
运算符重载函数重载方法:
●类外定义普通函数
●类内定义成员函数
●友元函数

  1. 用类外定义运算符重载函数编写*
#include
using namespace std;
class complex {
public:
	double real;
	double imag;
	complex(double r = 0, double i = 0) {
		real = r;
		imag = i;
	}
	void print();
	void input(complex );
	
}; 
//类外定义
complex operator*(complex co1, complex co2) {
	complex temp;
	temp.real = co1.real * co2.real - co1.imag * co2.imag;
	temp.imag = co1.real * co2.imag + co1.imag * co2.real;
	return temp;
}
void complex:: print() {
	cout << "mcl real=" << real << " " << "mcl imag=" << imag << endl;
}
void complex::input(complex co1) {
	cout << "请输入实部";
	cin >> real;
	cout << "请输入虚部";
	cin >> imag;
}

类外定义运算符重载函数不属于任何类,只能访问类中的公有成员数据。

   2.用成员运算符重载函数编写*

#include
using namespace std;
class complex {
public:
	double real;
	double imag;
	complex(double r = 0, double i = 0) {
		real = r;
		imag = i;
	}
	void print();
	void input(complex );
    complex operator*(complex c);//类内成员函数
};
complex complex :: operator*(complex c) {
	complex temp;
	temp.real = real * c.real - imag * c.imag;
	temp.imag = real * c.imag + imag * c.real;
	return temp;
}

成员运算符重载函数可以访问类内的私有成员或保护成员。

在成员运算符重载函数的形参表中:
➢如果运算符是单目的,则参数表为空;
➢如果运算符是双目的,则参数表中有一个操作数。

对双目运算符而言,成员运算符重载函数的形参表中仅有一个参数,是运算符的右操作数。另一个操作数(左操作数)是隐含的this指针,当前对象。

3.用友元运算符重载函数编写*

#include
using namespace std;
class complex {
public:
	double real;
	double imag;
	complex(double r = 0, double i = 0) {
		real = r;
		imag = i;
	}
	void print();
	void input(complex );
	friend complex operator*(complex co1, complex co2);
	//友元函数
};
complex operator*(complex co1, complex co2) {
	complex temp;
	temp.real = co1.real * co2.real - co1.imag * co2.imag;
	temp.imag = co1.real * co2.imag + co1.imag * co2.real;
	return temp;
}

友元运算符重载函数可以访问类内的私有成员或保护成员,但不属于类内。

运算符重载函数说明:

不能重载的运算符:
.  成员访问运算符
.* 成员访问指针运算符
? : 条件运算符
:: 作用域运算符
sizeof 长度运算符
C++只能对已有的C++运算符进行重载,不允许用户自定义新的运算符。
运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造完成的。
运算符重载不改变操作对象目数:
“+”为双目运算符,重载后依旧是双目运算符。
运算符重载不改变优先级。
运算符运算符重载函数的参数至少应有一个是类对象(或类的引用)。

程序执行结果如下:


 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/666952.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号