問題タブ [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++ - c++では、constも機能するのにコンパイラが非const関数を選択するのはなぜですか?
たとえば、次のクラスがあるとします。
コードの別の場所には、次のようなものがあります。
この場合、コンパイラが非 const バージョンを選択する理由を知っている人はいますか?
これはやや不自然な例ですが、解決しようとしている実際の問題は、オブジェクトが変更された場合にオブジェクトを定期的に自動保存することであり、ポインターはある時点で変更される可能性があるため、非 const でなければなりません。
c++ - 一時オブジェクトを変更して引数として渡すことはできますか?
一時オブジェクトを変更して引数として渡すことはできますか?
一時オブジェクトを const 参照に割り当てると、この一時オブジェクトの寿命が延びることが知られています。コードの 4 行目と 5 行目はどうでしょうか。関数 func_ref で参照 x が常に有効であるというのは本当ですか? 問題は、operator-- が何らかの参照を返し、コンパイラーがこの参照と作成した一時オブジェクトとの関係を認識しないことです。
c++ - なぜこれが機能するのですか?C++ で const 参照を返す
私は C++ と const の参照をいじっていて、なぜこのコードが機能するのか混乱しています:
結果:
ここに私の考えがあります:
var は a_ への参照を格納します。
a を削除するときは、a_ も削除する必要があります。
var が再度アクセスされると、有効な参照が含まれなくなり、セグメンテーション違反が発生するはずです。
なぜこれが機能するのですか?一時的なコピーを作成するとは思いません。
c++ - C++ での参照の初期化
これら2つのステートメントに違いがある理由を誰か説明できますか?
A&
タイプの一時からのタイプの非定数参照の無効な初期化を示していますA
なぜconst
ここで重要なのですか?
c++ - 失敗した場合に const QString 参照を返す方法は?
次のコードを検討してください。
メソッドの戻り値の型を変更せずに空の QStringを避けるにはどうすればよいですか? (スタックに割り当てられた空の QString を返すのは悪い考えのようです)
ありがとう。
c++ - const 参照クラス メンバーは、一時オブジェクトの寿命を延ばしますか?
なぜこれを行うのですか:
次の出力を与える:
答えは次のとおりです。
それ以外の:
答えは:4
c++ - 構成によるクラス機能の追加
Element
クラスTriangle
とQuadrilateral
が派生する抽象クラスがあるとします。
ただし、これらのクラスは、要素の形状に依存する補間メソッドと組み合わせて使用されると仮定します。InterpolationElement
したがって、基本的には、派生元の抽象クラスを作成しInterpolationTriangle
ますInterpolationQuadrilateral
。
次に、Triangle
およびクラスに補間機能を含めるために、タイプのQuadrilateral
クラスにconst-referenceデータメンバーを追加します。つまり、次のようになります。Element
InterpolationElement
InterpolationTriangle
次に、クラスのローカル静的オブジェクトを次のようにインスタンス化するメソッド(Scott Meyers、Effective C ++で説明)を作成します。
そのため、クラスTriangle
は次のように構成できます。
これが私の質問です:私のクラスに補間メソッドを組み込むために、このアプローチは正しいElement
ですか?これはプロのシナリオで使用されますか?
(純粋な仮想として)クラスにすべての補間メソッドを直接実装Element
し、派生クラスTriangle
とでそれらをオーバーライドすることができますQuadrilateral
。ただし、新しい補間機能を改善または実装する必要があるたびに、これらのクラスでそれを実行する必要があるため、このアプローチは面倒に思えます。さらに、このアプローチを使用すると、クラスはどんどん大きくなります(多くのメソッド)。
ヒントやコメントをお聞かせください
前もって感謝します。
追加の詳細:
c++ - マップの const_reference または iterator (実際に反復しない場合)
イテレータを使用して unordered_map のすべての要素をループするコードがありますが、そのループ内には、マップ内の特定の要素にイテレータを格納する他のプロセスがいくつかあり、通常は多くのジャンプを行いますが、反復は行いません (最も外側の反復子)。
unordered_map::const_reference
実際に反復していない場合は、要素にa を使用する方が適しているように思えました。これは本当ですか?私が const_references を使用することを妨げている唯一のことは、私の簡単なグーグル検索から、それらが大衆によって非常に使用されていないか、少なくともほとんど議論されていないように見えることです.
java - arraylist の const 参照を返す
私は Java の機能に感銘を受けており、次の問題のために Java の使用をあきらめたくありません。
継承される可能性のあるクラスがあり、その内部はprivate ArrayList arr;
セッター関数は問題ありませんが、ゲッター関数return arr;
はその変数への参照を返します.意味がありません!
C ++ではreturn const arr;
、変数への定数参照を返すだけです。
必要な計算が非常に多いため、変数を複製したり手動でコピーしたりしないようにする必要があります(変数のみを読み取る)なぜjavaにconstが返されないのですか???? コピーから逃れる方法はありますか?
ps(final ArrayList<Integer> arr;)
は、配列が常にサイズまたは要素の値を変更するため、オプションではありません。
その修正が見つからない場合は、C++ に戻るか、すべてを公開すると脅迫しています。私のソフトウェアを決して入手しないでください :D
編集:もう1つの重要な質問:私は何か良くないことを求めていますか(ソフトウェアエンジニアリングの観点から)、Javaの作成者がconst参照を持たない(読み取り専用参照を返す)と考えていた場合、他の方法で処理できる何かを求めているに違いありません仕方。または私のプログラム設計が間違っているので、私はとても混乱しています。