关于自定义类"+"、"="、"=="运算符的重载,举例如下,具体步骤为:
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;
}