1

私はオーバーロード演算子を理解しようとしていますが、認めたくないほど長い間これを見つめてきました。operator+ メンバーを除いて、クラス内のすべてを理解していると思います。入手可能な大量の情報を使って独学しようとしていますが、ここで見ていることを説明する情報が見つかりません。何かがどのように機能するかを理解していれば、それができると固く信じています。それをよりよく使用してください。

したがって、ほとんどの場合、コンパイラが temp のどの変数を選択するかを知る方法に混乱があります。(temp.x または temp.y) main() が cx と cy を要求していることに気づきましたが、operator+ はまだ定義されていないものを返しているようです。三項演算子や、返すものを選択させるものはありません。

#include <iostream>
using namespace std;

class CVector {
public:
    int x,y;
    CVector () {};
    CVector (int,int);
    CVector operator + (CVector);
};

CVector::CVector (int a, int b) {
    x = a;
    y = b;
}

CVector CVector::operator+ (CVector param) {
    CVector temp;
    temp.x = x + param.x;
    temp.y = y + param.y;
    return (temp);
}

int main () {
    CVector a (3,1);
    CVector b (1,2);
    CVector c;
    c = a + b;
    cout << c.x << "," << c.y;
    return 0;
}
4

2 に答える 2