我是C++编程的新手。有人能向我解释一下布尔比较运算符是如何在用户定义的数据类型中工作的吗?
#include <iostream>
#include <string>
#include <functional>
using namespace std;
class person {
public:
float age;
string name;
bool operator<(const person& rhs) const
{
return age < rhs.age;
}
bool operator>(const person& rhs) const
{
return age > rhs.age;
}
};
C++标准提供了一种更好的方法来直接对对象使用运算符。例如:
class abc {
public:
abc() {}
};
// declaration
abc a1, a2, a3;
a3 = a1 + a2; // impossible expression without operator overload
在这里,不能使用算术运算符+
,因为它们是abc
类类型的对象,并且表达式不能以这种方式求值。
代码使用的概念被称为运算符重载,它也可以用于结构中。
因此,有两种方法可以实现这一点:
定义一个类成员函数,用于比较类的私有变量成员。
或者,使用运算符重载来定义运算符(如
+
、<<
等(在与相应的类对象一起使用时应该做什么(以代码中使用的方式(。