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言語では関数のみを使用して演算子のオーバーロードの動作をシミュレートできます。

bannerAds