問題タブ [object-slicing]
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++ - オブジェクトスライスとは?
誰かが IRC でスライシングの問題として言及しました。
java - Java / C# での C++ スライシング
C++ スライシングは、Java/C# などの他の言語にも適用できますか?
c++ - ポインタと参照パラメータの違いは?
これらは同じですか:
と
ヌルポインタの可能性を無視します。これらの2つの関数someInt()
は、仮想であるか、bar
またはのサブクラスが渡されるかどうかに関係なく、機能的に同一bar
ですか?
これは何かをスライスしますか:
c++ - 例外スライシング - これは生成されたコピー コンストラクターによるものですか?
例外のスライスによって引き起こされた、コード内の非常に微妙なバグを修正したばかりで、何が起こっているのかを正確に理解したいと思っています。
基本例外クラス、派生クラス、および関連する関数は次のとおりです。
バグはもちろん、outercall が Derived ではなく Exception をスローしてしまうことでした。私のバグは、Derived の失敗をキャッチしようとするコール スタックの試行回数が多いことが原因でした。
ここで、理解していることを確認したいだけです。「throw e」行で、デフォルトのコピー コンストラクターを使用して、新しい Exception オブジェクトが作成されていると思います。それは本当に起こっていることですか?
その場合、スローされるオブジェクトのコピー コンストラクターをロックアウトできますか? これが二度と起こらないことを本当に望んでおり、私たちのコードには Exception オブジェクトをコピーする理由がありません (私が知っていることです)。
独自の例外階層があるという事実についてはコメントしないでください。これは少し古い設計で、修正に取り組んでいます (順調に進んでいます。自家製の文字列クラスと、自家製のコンテナの多くを取り除きました)。
更新:明確にするために、質問をする前にバグを修正しました(「throw e」を「throw」に変更することにより)。何が起こっているかの確認を探していました。
c++ - スマート ポインターでスライスが発生する可能性はありますか?
スライスを正しく理解していれば、ポインターやスマートポインターでこれが発生する可能性はないと思います。たとえば、次の場合:
私の理解では、「b」が指すオブジェクトに割り当てられたメモリのブロックは依然として同じであり、スマートポインター「a」に割り当てられても変更されません。
私の理解を確認または拒否するか、これに関連する落とし穴があればお知らせください。
c++ - 例外タイプのスライスを避ける(C ++)
ライブラリ用にC++で例外階層を設計しています。「階層」は、std::runtime_errorから派生した4つのクラスです。例外クラスのスライスの問題を回避したいので、コピーコンストラクターを保護しました。しかし、どうやらgccはそれらのインスタンスをスローするときにコピーコンストラクターを呼び出す必要があるので、保護されたコピーコンストラクターについて文句を言います。Visual C ++ 8.0は、同じコードを正常にコンパイルします。例外クラスのスライスの問題を解決するための移植可能な方法はありますか?標準は、実装がスローされるクラスのコピーコンストラクターを必要とするかどうかについて何かを述べていますか?
c++ - C++ポリモーフィズムとスライス
次のコードは、出力します
しかし、すべてのDerivedオブジェクトをUser :: itemsに入れて、独自のprint関数を呼び出す必要がありますが、基本クラスのオブジェクトは必要ありません。ポインターを使用せずにそれを達成できますか?それが不可能な場合、メモリリークが発生しないように、User :: itemsを1つずつ削除してメモリを解放する関数を作成するにはどうすればよいですか?
c++ - 参照とオブジェクトのスライス
私はEffectiveC++を持っていません。これは私を悩ませているので、自分自身の正気を求めなければなりません。与えられた
合格した場合Foo
、スライスの問題に巻き込まれていますか、それとも回避しましたか?
c++ - std::move はスライスになりますか?
たとえば、
deriv はタイプにスライスされunique_ptr<Base>
ますか?