C++运算符重载练习
#include <iostream> // 引入输入输出流库
using namespace std; // 使用标准命名空间,避免每次写 std::// 定义一个名为 Person 的类,表示“人”的概念
class Person
{
public:string name; // 姓名int inNumberTail; // 身份证尾号(最后6位)// 重载 == 运算符,用于判断两个 Person 对象是否“相等”// 根据需求:如果两个人的名字相同且身份证尾号相同,则认为他们是同一个人bool operator==(Person pTmp);
};// 实现 == 运算符重载函数
// 参数是另一个 Person 对象(pTmp)
// 返回值是布尔类型,表示当前对象(this)和传入的对象是否相等
bool Person::operator==(Person pTmp){// 比较两个对象的 name 和 inNumberTail 是否都相等return pTmp.name == name && pTmp.inNumberTail == inNumberTail;
}// 主函数,程序的入口点
int main()
{// 创建两个 Person 对象 p1 和 p2,并初始化它们的成员变量Person p1;p1.name = "张三"; // 设置姓名为“张三”p1.inNumberTail = 412508; // 设置身份证尾号为 412508Person p2;p2.name = "张三"; // 设置姓名为“张三”p2.inNumberTail = 412508; // 设置身份证尾号也为 412508// 使用重载的 == 运算符比较 p1 和 p2bool ret = p1 == p2;// 输出比较结果(true 或 false)// 在 C++ 中,true 显示为 1,false 显示为 0cout << ret << endl; // 预期输出 1,因为两个对象的 name 和 inNumberTail 相同return 0; // 程序正常结束,返回 0
}
总结:
- 功能:该程序定义了一个
Person
类,并通过重载==
运算符来判断两个Person
对象是否代表同一个人。 - 判断依据:如果两个对象的
name
和inNumberTail
(身份证尾号)都相同,则认为这两个对象“相等”。 - 测试用例:在
main()
函数中创建了两个完全相同的Person
对象,并使用==
比较它们,输出结果为1
(即true
)。
✅ 如果你需要进一步扩展这个类(比如添加构造函数、封装成员变量、处理更多个人信息),可以继续优化。