我遇到了一本书,其中指出有一些称为辅助函数的函数通常在类外声明,并包含一些在程序中重复使用的函数。
他们说==和!=是帮助函数的类型,用于比较类。
为什么他们在课外宣布?我不明白吗?
答案 0 :(得分:2)
如果我理解你,你就是在谈论朋友的功能。运算符==和运算符!=可以写在类主体之外,它们的目的是为类重载==和!=运算符,以便在if / while等语句中进行比较。例如:
class A {
int size;
public:
A(int x) : size(x) {};
// declaring that this operator can access private methods and variables of class A
friend operator==(const A&, int);
friend operator==(const A&, const A&);
}
// overloaded operator for comapring classes with int
bool operator==(const A& lside, int rside) {
return lside.size == rside;
}
// second overload for comapring structure two classes
bool operator==(const A& lside, const A& rside) {
return lside == rside.size; // we can also use first operator
}
int main() {
A obj(5);
if (A == 5) { ... } // TRUE
if (A == 12) { ... } // FALSE
}
如果这不是你的意思,那么任何一个班级都可以使用经典的非会员功能。正如您所说,这可能对程序的多个部分中使用的函数很有用,这些函数不依赖于任何特定的类。例如:
// simple function returnig average of given numbers from vector
int average(const std::vector<int>& vec) {
int sum = 0;
for (int i : vec)
sum += i;
return sum / vec.size();
}