問題タブ [const-reference]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
446 参照

c++ - 戻り値を const 参照として保存するのではなく、値として保存する

関数に署名があるとします

値によって新しい文字列を返します。次のコードが与えられます。

(a) と (b) は、C++11 コンパイラの観点からは同一であると理解するのは正しいですか? もしそうなら、スタイルの選択について大まかなコンセンサスはありますか?

0 投票する
2 に答える
1717 参照

c++ - デフォルト値で参照パラメータを使用していますか?

次のコードがあります。

一時的なパラメーターを使用した呼び出しとパラメーターを使用しない呼び出しは、(もしあったとしても) どの程度悪いのでしょうか?

私の知る限り、これは const 参照がメソッドの終わりまで一時的な寿命を延ばすという事実のためにのみコンパイルされますhttp://herbsutter.com/2008/01/01/gotw-88-a-candidate-for -最も重要な定数/

constnext tosパラメータなしで同じ例をコンパイルしようとすると失敗します。

コンパイル

0 投票する
1 に答える
72 参照

c++ - const 以外の値で初期化された reference-to-cont クラス メンバー

入力データとして、外部データへの参照を (コピーせずに) 使用するか、他の入力に基づいてデータ自体を作成するクラスがあります。私は参照を使用することを好み(データは行列であるため、逆参照を避けるため)、最終的に次の構造になりました(簡略化):

例は動作します:

しかし、このアプローチに潜在的な問題はありますか? 特に、 const vector 'legal' C++x0によって参照される変更を行っているという事実 ですか、それとも他のコンパイラが不満を言う可能性がありますか?x

また、最初のコンストラクターがデータのコピーを回避していると確信できますか?

0 投票する
2 に答える
512 参照

c++ - C++ クラスに const 参照と非 const 参照コピー コンストラクターの両方が含まれている場合はどうなりますか?

スニペット 1:

output : const コピーコンストラクターが呼び出されました


スニペット 2:

output : 非 const コピー コンストラクターが呼び出されました


スニペット 3:

出力: エラー: コピー コンストラクターは最初の引数を参照渡しする必要があります


私はとても混乱しています:

  1. スニペット 2 の場合、ここの非 const コピー コンストラクターが有効なのはなぜですか? const ではなく、非 const コピー コンストラクターが呼び出された理由。
  2. スニペット 3 については、無限再帰を避けるために、コピー コンストラクターが const 参照を使用する必要があることを知っています。しかし、クラス C には がありC(const C& c)C(C c)無限再帰は発生しません。なぜそれでも機能しないのでしょうか?
0 投票する
0 に答える
58 参照

c++ - コンストラクターでの文字列 const 参照と int const 参照

コンストラクターと参照を試して学習しようとしています。私は次のようにクラスを書きました。クラスの後に書かれた答えを期待しています

しかし、私はこのようなものを得ます。m_name関数を呼び出すと失われます。intの代わりに使用すると、同じクラスが正常に機能しstringます。何が問題ですか?

int const参照付きの同じクラス

この場合、正しい答えが得られます。

誰かが理由を説明できますか?組み込み型は保持されますか?

0 投票する
1 に答える
274 参照

c++ - ?: 式で作成された C++ 一時オブジェクトの有効期間は、それをローカルの const 参照にバインドすることによって延長されますか?

?: 式の const 参照にバインドすることで、一時オブジェクトの有効期間が延長されるかどうかは明確ではありません。

バインディングが条件付きであっても、デフォルトのコンストラクター Foo() を呼び出すことによって作成された一時の有効期間は、それをローカル const ref にバインドすることによって延長されますか? それとも、Foo() の一時的な値が ?: 式の最後で破棄されるため、ダングリング参照が作成されますか?