前置インクリメントと後置インクリメントの違い

前置インクリメントは「++変数」の形式。後置インクリメントは「変数++」の形式で表すものですが、違いは特に意識していませんでした。

なんで前置インクリメントの方が速いかはプログラマならすぐ判るよね。それ以前に、前置と後置の違いが判ってたら普通は前置を使うよね。

インクリメントの速度 - methaneのブログ

恥ずかしながら分かりませんでした。気になってしょうがないので、調べました。すると、

内部動作についてですが、前置インクリメントの処理が*this、つまりインスタンス自体を返しているのに対して、後置インクリメントの処理では内部で生成したインスタンスのコピーを返しています。

C++で後置インクリメントよりも前置インクリメントが多用される理由 - 考える人、コードを書く人

ほー。つまり、前置(++変数)はインスタンス自体をそのまま返すが、後置(変数++)はコピーを作ってそれを返すということですか。だから、処理スピードは前置の方が優れているわけですね。
となると、この差がでるのはオブジェクト指向ならではなんですね。つまり、C言語でインクリメントを学んでも、オブジェクト指向で発生するこの違いはわからないということになります。前置インクリメントと後置インクリメントのスピードの違いを試しましたが、やはり差はなかったです。(誤差は無視して)
でも何で、一般的に「変数++」の形で使われることが多いのだろう。オブジェクト指向でない言語でも「変数++」と「++変数」にはちゃんと違いがあり、前者は「まず変数を返して、それから変数=変数+1をする」で、後者は「まず変数=変数+1をして、変数を返す」という動作になるわけで、変数を+1したいと考えてインクリメントをするなら直感的には「++変数」の方が正しい結果を得られそうだが。