0

クラスで RVO と連携して、作成される一時ファイルの数を減らす方法を示しています。

基本はわかりましたが、複数の値を組み合わせて 1 行に戻す方法を理解するのに苦労しています。

単一の一時的な最適化については、かなり簡単に理解できました

const A operator + ( const A &tmp)
{
    A sum;
    sum = this->x + tmp.x;
    return sum;
}

次のように削減できます。

const A operator + ( const A &tmp)
{
    return A(this->x + tmp.x);
}

ただし、複数の値を返す関数にこれを適用する方法がわかりません。例えば:

Vect2D operator - ( const Vect2D &tmp ) const;

Vect2D Vect2D::operator - ( const Vect2D &tmp ) const
{
    Vect2D sum;

    sum.x = this->x - tmp.x;
    sum.y = this->y - tmp.y;

    return ( sum );
};

その背後にある私のプロセスは次のようになります。

Vect2D Vect2D::operator - ( const Vect2D &tmp ) const
{
    return Vect2D((this->x - tmp.x), (this->y - tmp.y));
};

" " というエラーが表示されますno argument takes the value (float, float)

初期を再編成する必要がありますか

Vect2D 演算子 - ( const Vect2D &tmp ) const;

内部で 2 つの float 引数を取るには? それとも私はこれについて間違った方法で考えていますか?

ありがとうございました、

E: ダブル フロート演算子を使用する必要があると私が考えていたことを確認してくれた Matt と Jerry に感謝します。

4

1 に答える 1