問題タブ [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 投票する
4 に答える
3510 参照

c++ - c++では、constも機能するのにコンパイラが非const関数を選択するのはなぜですか?

たとえば、次のクラスがあるとします。

コードの別の場所には、次のようなものがあります。

この場合、コンパイラが非 const バージョンを選択する理由を知っている人はいますか?

これはやや不自然な例ですが、解決しようとしている実際の問題は、オブジェクトが変更された場合にオブジェクトを定期的に自動保存することであり、ポインターはある時点で変更される可能性があるため、非 const でなければなりません。

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

c++ - 一時オブジェクトを変更して引数として渡すことはできますか?

一時オブジェクトを変更して引数として渡すことはできますか?

一時オブジェクトを const 参照に割り当てると、この一時オブジェクトの寿命が延びることが知られています。コードの 4 行目と 5 行目はどうでしょうか。関数 func_ref で参照 x が常に有効であるというのは本当ですか? 問題は、operator-- が何らかの参照を返し、コンパイラーがこの参照と作成した一時オブジェクトとの関係を認識しないことです。

0 投票する
4 に答える
340 参照

c++ - なぜこれが機能するのですか?C++ で const 参照を返す

私は C++ と const の参照をいじっていて、なぜこのコードが機能するのか混乱しています:

結果:

ここに私の考えがあります:

var は a_ への参照を格納します。
a を削除するときは、a_ も削除する必要があります。
var が再度アクセスされると、有効な参照が含まれなくなり、セグメンテーション違反が発生するはずです。

なぜこれが機能するのですか?一時的なコピーを作成するとは思いません。

0 投票する
5 に答える
1089 参照

c++ - C++ での参照の初期化

これら2つのステートメントに違いがある理由を誰か説明できますか?

A&タイプの一時からのタイプの非定数参照の無効な初期化を示していますA

なぜconstここで重要なのですか?

0 投票する
7 に答える
7462 参照

c++ - 失敗した場合に const QString 参照を返す方法は?

次のコードを検討してください。

メソッドの戻り値の型を変更せずに空の QStringを避けるにはどうすればよいですか? (スタックに割り当てられた空の QString を返すのは悪い考えのようです)

ありがとう。

0 投票する
6 に答える
51597 参照

c++ - const 参照クラス メンバーは、一時オブジェクトの寿命を延ばしますか?

なぜこれを行うのですか:

次の出力を与える:

答えは次のとおりです。

それ以外の:

答えは:4

0 投票する
5 に答える
388 参照

c++ - 構成によるクラス機能の追加

ElementクラスTriangleQuadrilateralが派生する抽象クラスがあるとします。

ただし、これらのクラスは、要素の形状に依存する補間メソッドと組み合わせて使用​​されると仮定します。InterpolationElementしたがって、基本的には、派生元の抽象クラスを作成しInterpolationTriangleますInterpolationQuadrilateral

次に、Triangleおよびクラスに補間機能を含めるために、タイプのQuadrilateralクラスにconst-referenceデータメンバーを追加します。つまり、次のようになります。ElementInterpolationElement

InterpolationTriangle次に、クラスのローカル静的オブジェクトを次のようにインスタンス化するメソッド(Scott Meyers、Effective C ++で説明)を作成します。

そのため、クラスTriangleは次のように構成できます。

これが私の質問です:私のクラスに補間メソッドを組み込むために、このアプローチは正しいElementですか?これはプロのシナリオで使用されますか?

(純粋な仮想として)クラスにすべての補間メソッドを直接実装Elementし、派生クラスTriangleとでそれらをオーバーライドすることができますQuadrilateral。ただし、新しい補間機能を改善または実装する必要があるたびに、これらのクラスでそれを実行する必要があるため、このアプローチは面倒に思えます。さらに、このアプローチを使用すると、クラスはどんどん大きくなります(多くのメソッド)。

ヒントやコメントをお聞かせください

前もって感謝します。


追加の詳細:

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

c++ - マップの const_reference または iterator (実際に反復しない場合)

イテレータを使用して unordered_map のすべての要素をループするコードがありますが、そのループ内には、マップ内の特定の要素にイテレータを格納する他のプロセスがいくつかあり、通常は多くのジャンプを行いますが、反復は行いません (最も外側の反復子)。

unordered_map::const_reference実際に反復していない場合は、要素にa を使用する方が適しているように思えました。これは本当ですか?私が const_references を使用することを妨げている唯一のことは、私の簡単なグーグル検索から、それらが大衆によって非常に使用されていないか、少なくともほとんど議論されていないように見えることです.

0 投票する
4 に答える
6831 参照

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参照を持たない(読み取り専用参照を返す)と考えていた場合、他の方法で処理できる何かを求めているに違いありません仕方。または私のプログラム設計が間違っているので、私はとても混乱しています。