問題タブ [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.
c++ - 戻り値を const 参照として保存するのではなく、値として保存する
関数に署名があるとします
値によって新しい文字列を返します。次のコードが与えられます。
(a) と (b) は、C++11 コンパイラの観点からは同一であると理解するのは正しいですか? もしそうなら、スタイルの選択について大まかなコンセンサスはありますか?
c++ - デフォルト値で参照パラメータを使用していますか?
次のコードがあります。
一時的なパラメーターを使用した呼び出しとパラメーターを使用しない呼び出しは、(もしあったとしても) どの程度悪いのでしょうか?
私の知る限り、これは const 参照がメソッドの終わりまで一時的な寿命を延ばすという事実のためにのみコンパイルされますhttp://herbsutter.com/2008/01/01/gotw-88-a-candidate-for -最も重要な定数/
const
next tos
パラメータなしで同じ例をコンパイルしようとすると失敗します。
コンパイル
c++ - const 以外の値で初期化された reference-to-cont クラス メンバー
入力データとして、外部データへの参照を (コピーせずに) 使用するか、他の入力に基づいてデータ自体を作成するクラスがあります。私は参照を使用することを好み(データは行列であるため、逆参照を避けるため)、最終的に次の構造になりました(簡略化):
例は動作します:
しかし、このアプローチに潜在的な問題はありますか? 特に、 const vector 'legal' C++x0
によって参照される変更を行っているという事実 ですか、それとも他のコンパイラが不満を言う可能性がありますか?x
また、最初のコンストラクターがデータのコピーを回避していると確信できますか?
c++ - C++ クラスに const 参照と非 const 参照コピー コンストラクターの両方が含まれている場合はどうなりますか?
スニペット 1:
output : const コピーコンストラクターが呼び出されました
スニペット 2:
output : 非 const コピー コンストラクターが呼び出されました
スニペット 3:
出力: エラー: コピー コンストラクターは最初の引数を参照渡しする必要があります
私はとても混乱しています:
- スニペット 2 の場合、ここの非 const コピー コンストラクターが有効なのはなぜですか? const ではなく、非 const コピー コンストラクターが呼び出された理由。
- スニペット 3 については、無限再帰を避けるために、コピー コンストラクターが const 参照を使用する必要があることを知っています。しかし、クラス C には があり
C(const C& c)
、C(C c)
無限再帰は発生しません。なぜそれでも機能しないのでしょうか?
c++ - コンストラクターでの文字列 const 参照と int const 参照
コンストラクターと参照を試して学習しようとしています。私は次のようにクラスを書きました。クラスの後に書かれた答えを期待しています
しかし、私はこのようなものを得ます。m_name
関数を呼び出すと失われます。int
の代わりに使用すると、同じクラスが正常に機能しstring
ます。何が問題ですか?
int const
参照付きの同じクラス
この場合、正しい答えが得られます。
誰かが理由を説明できますか?組み込み型は保持されますか?
c++ - ?: 式で作成された C++ 一時オブジェクトの有効期間は、それをローカルの const 参照にバインドすることによって延長されますか?
?: 式の const 参照にバインドすることで、一時オブジェクトの有効期間が延長されるかどうかは明確ではありません。
バインディングが条件付きであっても、デフォルトのコンストラクター Foo() を呼び出すことによって作成された一時の有効期間は、それをローカル const ref にバインドすることによって延長されますか? それとも、Foo() の一時的な値が ?: 式の最後で破棄されるため、ダングリング参照が作成されますか?