自定义类“+“、“=“、“==“运算符的重载案例

关于自定义类"+"、"="、"=="运算符的重载,举例如下,具体步骤为:
1、声明一个自定义类,public方式设置int、float两个成员变量,使用无参构造函数给变量赋初值。
2、类内声明并实现重载 "+" 成员函数。
3、类内声明并实现重载 "=" 成员函数。
4、类外声明并实现重载 "==" 全局函数。
5、结果验证。
相关代码及注释:

#include<iostream>
#include<string>
using namespace std;
//步骤1
class myClass //声明类
{
 public: 
	int valA;
	float valB;
	myClass():valA(5), valB(3.1415) {  }; //无参构造赋初值
//步骤2
	myClass operator+(myClass& mc) //重载"+"函数
	{
		myClass temp;
		temp.valA=mc.valA+this->valA; //this是指向调用者的指针
		temp.valB=mc.valB+this->valB; 
		return temp;
	}
//步骤3	
    myClass operator=(myClass& mc) //重载"="函数
	{
		myClass temp;
		temp.valA=mc.valA; 
		temp.valB=mc.valB; 
		return temp;
	}
};
//步骤4
bool operator==(myClass& mc1,myClass& mc2) //重载"=="函数
{
	if(mc1.valA==mc2.valA && mc1.valB==mc2.valB)
	{
		return true;
	}
	else
	{
		return false;
	}
}
//步骤5
int main()
{
	myClass m1;
    myClass m2;
	myClass ret=m1+m2;
	cout << "\n重载 + 函数验证结果:" << endl;
	cout << "m1.valA= " << m1.valA << " m1.valB= " << m1.valB << endl;
	cout << "m2.valA= " << m2.valA << " m2.valB= " << m2.valB << endl;
	cout << "ret.valA= " << ret.valA << " ret.valB= " << ret.valB << endl;
	cout << "\n重载 = 函数验证结果:" << endl;
	myClass ret2 = m1;
	cout << "m1.valA= " << m1.valA << " m1.valB= " << m1.valB << endl;
	cout << "ret2.valA= " << ret2.valA << " ret2.valB= " << ret2.valB << endl;
	cout << "\n重载==函数验证结果:" << endl;
	if (ret == ret2)
	{
		cout << "ret与ret2相等。" << endl;;
	}
	else
	{
		cout << "ret与ret2不相等。" << endl;
	}
	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值