あなたは型を指定しませんでしたので、私は、これらはすべての組み込みC++型、特に算術型(整数型または浮動小数点型のいずれか)であると仮定するつもりです。それがユーザー定義型の場合は、以下に述べることが何も保証されません。
T& lhs.operator=(T& rhs)
はコピー代入演算子です(この場合は移動代入でも可能です)。 (正規の)コピー代入演算子は、rhs
をパラメータとして参照し、lhs
にデータをコピーし、lfs
への参照を返します。
T& lhs.operator++(int)
は、増分演算子です(int
に注意してください。これは接頭辞増分演算子から接尾辞を区切るものです)。ほとんどの組み込み型ではT&
が正規の戻り値型ですが、ユーザー定義型ではT
を返すのが一般的です。いずれにしても、後置インクリメント演算子はlhs
の値を増やしますが、元の値を返します。
T& lhs.operator+=(T& rhs)
は、化合物加算代入演算子です。 lhs
が1回だけ評価されること以外は、式lhs=lhs+rhs
と同等です。
タイプではない場合を除きので
Out[i] = (Sum += Tap[TapPtr++] = Inp[i]);
にコードを混乱させない同等のは、あなたが見ることができるように、Javaコード内の正しい最後の行はOut[i]=Sum;
あるべき
{
auto tempTapPtr=TapPtr;
++TapPtr;
Tap[tempTapPtr]=Inp[i];
Sum+=Tap[tempTapPtr];
}
Out[i]=Sum;
ことだろうが、組み込み算術型では、Out[i]=Inp[i]
は機能的に同等です。また、Javaコードの2行目が間違っています。それはSum=Sum+Tap[TapPtr-1];
でなければなりませんが、最後の行と同様に、あなたが書いたものと機能的に同等です。
「TapPtr」は1回だけ増やしてください**。 –
私はあなたの質問タグでとてもリベラルではないことをお勧めします。 – miradulo
私はJavaコーディング標準を学びます。 https://google.github.io/styleguide/javaguide.html。 C++優先ルールを読んでください。 – duffymo