まず、知っておく必要があるのは、++i と i++ の違いは何ですか? .
あなたの場合、あなたはしたい:
data
あなたのを読んでくださいhead
- あなたの移動
head
- 1 で読み取った値を返します。
したがって、コードでは次のようになります。
char testclass::read() {
char result = data[head]; // 1
head += 1; // 2
return result; // 3
}
これで、ここの代わりに++head
orを使用できます。このステートメントの結果は使用されないため、関数の動作は変更されません (つまり、使用できますが、おそらく使用したくないでしょう)。head++
head += 1
x = y += 1;
必要に応じて、この関数を 1 行で記述できますが、可読性が低下します (多くの場合、1 行に 1 つのステートメントのみを使用する方が適切です。この方法ではエラーが発生しにくくなります)。
return data[head++];
これhead++
は、変数をインクリメントしますが、その「古い」値を返すため機能します。
ただし、3 行のコードよりも高速だとは思わないでください。コンパイラはそれを最適化するのに十分賢く、おそらく両方の実装で同じアセンブリ コードを生成します。
関数の最初のバージョンに関しては、return ステートメントの後のコードが実行されないことを忘れないでください。(たとえば、この SO を参照してください。return ステートメントが c++ でアクセスされた後の関数内のコードの実行)