有没有办法在C中重载比较器,以便我们可以使用>
,=
和<
例如:
struct point {
int x, y;
}
struct point pt1 = make_point(2, 4);
struct point pt2 = make_point(2, 3);
我们可以在y
值(或结构的某个任意成员)上进行比较。
if (pt1 > pt2)
{
printf("Point 1 is greater than Point 2\n");
}
它会打印出来,Point 1 is greater than Point 2
自4&gt; 3。
答案 0 :(得分:3)
不,你不能在C中重载运算符。你甚至无法在C中重载普通的函数。
答案 1 :(得分:2)
不,这是不可能的。这是一个C ++功能。
你应该写一些函数,这样做并使用它:if( is_greater( pt1, ptr2 ) )
这样的东西。
答案 2 :(得分:1)
不,C不支持运营商重载。您可以拥有的最好的是编写比较器函数。
答案 3 :(得分:1)
正如其他人所说,C不支持运营商重载。这种编程范例通常通过使用函数指针传递比较器操作在C中完成。例如,请参阅标准库中的qsort。