0

C++ プログラミング言語からの演算子のオーバーロードの例を次に示します。

struct X{
     int I;
     X(int);
     X operator+(int);
};

struct Y{
    int I;
    Y(X);
    Y operator+(X);
    operator  int();
}

X と Y の両方の定義で "int I" が何をするのかよくわかりません。また、X の定義で "operator int()" の機能を分析する方法がわかりません。

4

2 に答える 2

2

operator int()構造体からへの変換を提供するintため、次のように記述できます。

X(4);
Y y(x);
int a = y; // calls Y::operator int()

その変換の正確な意味は、演算子の実装方法によって異なります

構造体では、名前付きおよび型のint I(両方の) メンバー変数を宣言しますIint

于 2012-05-23T17:50:20.063 に答える
2

int I両方の構造体がオブジェクトの内部状態を表していると想定しています。

Y operator+(X);

y + xこれは、 for型の新しいオブジェクトを返す演算子ですY

operator  int();

これは変換演算子です。つまり、Yを に変換できますint

演算子の定義がないため、実際のセマンティクスは不明です。

于 2012-05-23T17:50:41.720 に答える