C言語の演算子のオーバーロードの仕組み
C言語では、演算子のオーバーロードはサポートされていないため、類似の機能は関数によって実現する。たとえば、オーバーロードされた加算演算子の代わりに、以下のような関数を定義することができる。
#include <stdio.h>
typedef struct {
int x;
int y;
} Point;
Point add(Point p1, Point p2) {
Point result;
result.x = p1.x + p2.x;
result.y = p1.y + p2.y;
return result;
}
int main() {
Point p1 = {1, 2};
Point p2 = {3, 4};
Point sum = add(p1, p2);
printf("Sum: (%d, %d)\n", sum.x, sum.y);
return 0;
}
このコードは、Point構造体と、二つのPoint構造体の座標の和を計算するadd関数を実装しています。main関数では、2つのPointオブジェクトp1とp2を作成し、add関数を使ってそれらの和を計算して結果を表示します。
C++は演算子のオーバーロードをサポートしているため、このような機能をより簡単に実装できることに注意してください。ただし、C言語では関数のみを使用して演算子のオーバーロードの動作をシミュレートできます。