C++では、A + = BがA = A + Bよりも好ましく、++ AはA ++になりますか?C++では、A + = BがA = A + Bよりも好都合です。++ AはA ++になりますか?
"++ A"プリインクリメントは少なくとも "A ++"ポストインクリメントと同じくらい速いことが保証されています。これは、hereとhereを含む多くの場所で議論されています。同様に、A + = Bは少なくともA = A + Bと同じ速さであると予想され、hereとなる。
私は++のために、このを見ていた:
//From https://herbsutter.com/2013/05/13/gotw-2-solution-temporary-objects/
T T::operator++(int)() {
auto old = *this; // remember our original value
++*this; // always implement postincr in terms of preincr
return old; // return our original value
}
私の推論は、(おそらく、複雑なオブジェクト型からの)最悪の場合にはA = A + Bを取得し、店舗Aのとで追加する必要がありますということですBを元のA位置に戻す前にBを押して、A + = BをBにしてAに直接追加します。私の推論は正しいのですか?
基本タイプはコンパイル時に同じように並べ替えられ、実際にはオペレータのオーバーロードが必要な複雑なオブジェクトにのみ適用されることが予想されます。
これは一般的にほとんどの命令型言語にまで及んでいますか?
一部のアーキテクチャでは 'a ++'が好ましいです。 – EJP
このレベルの最適化について心配しているのであれば、高級言語を使用してはならないかもしれません... –
Re:「これは一般的に最も基本的な言語にまで及んでいますか?」:C++は、非プリミティブ型の値割当のレベル概念。その質問はほとんどの他の言語の文脈でも意味をなさない。 (もちろん、プログラマは 'a.add(b)'が 'a.setData(a.plus(b))'と等価であるように 'setData'と' plus'と 'add'を定義するかもしれませんが、その時点で – ruakh