3

重複の可能性:
ostream&operator <<(…)のようにクラス名の後に使用する場合のアンパサンドは何ですか?

私はC++を初めて使用しますが、おそらく非常にわかりにくい質問があります。私はこのようなものを見ました:

Vector3f & operator = (Vector3f & obj)
{
    _item[0] = obj[0];
    _item[1] = obj[1];
    _item[2] = obj[2];

    return *this;
}

そして、Vector3fの後になぜアンパサンド(&)があるのか​​疑問に思いました。どんな魔法をしているの?どこにも説明が見つかりませんでした。最も重要なのは、上記のものとの違いは何ですか

Vector3f operator = (Vector3f obj)
{
    _item[0] = obj[0];
    _item[1] = obj[1];
    _item[2] = obj[2];

    return *this;
}
4

2 に答える 2

3

これは、参照渡しと参照渡しのためのC++の構文です。これは、パラメータが呼び出し元のコンテキストからのオブジェクトのエイリアスであり、コピーではないことを意味します。同様に、返されるオブジェクトは実際*thisにはコピーではなく、です。

于 2012-10-02T13:24:31.207 に答える
2

最初のものはVector3frefetenceによってaを取り、Vec3torf参照によってaを返します。2番目は値を取り、値で返します(つまり、意味的には引数のコピーも作成します*this)。

于 2012-10-02T13:24:27.107 に答える