問題タブ [upcasting]
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.
primitive-types - アップキャストとダウンキャストの違いは何ですか?
プリミティブ データ型と参照データ型に関するアップ キャストとダウン キャストの違いは何ですか。
たとえば、プリミティブ型では、アップキャストは低い方から高い方へ (int から double)、ダウンキャストは高い方から低い方へ (double から int) と言っています。これにはキャスト演算子を使用します。
ただし、参照されるデータ型の場合は、前のケースとは逆になります。たとえば、動物にはメソッドしか含まれていませんがcallme()
、犬にはメソッドが含まれcallme()
てcallme2()
いるため、動物は犬よりも高いと言えます。
php - PHP アップキャスト オブジェクト
オブジェクトをその親オブジェクトにアップキャストできますか?
サンプルコード
PHPで可能ですか?
私のシナリオでは、ClassB を構築していて、関数 ClassB::Foo() をオーバーライドしてその動作を拡張し、コントロールを親関数 ClassA::Foo() に戻しますが、オブジェクトになっているためコードが壊れますクラスBの。「コードのにおい」について私を責めないでください。ClassA は私の手に負えません... :-)
c++ - クラスのキャスト ( アップキャスト )
「obj」という名前のクラスと「aggregate」という名前の別のクラスがあります。
2 つ目は最初のものから派生したものです。
クラス「obj」は整数のみを保持します。「集約」はそれ以上のものではありません(「メソッド」のみ)。
「obj」を返す関数があります
その結果をクラス「集計」の変数に割り当てる必要があります。
集約 a;a=pop();
私はそれを次のようにしようとします:
基本的にスタック上で構造体の値が渡されるため(基本的に整数)、なぜ私がすべきか理解できません:
c++ - 新規配置と継承
皆さん、今晩は。
コード スニペットは 1,000 語の価値があります。
ご覧のとおり、基本クラス ポインターを実際に格納せずに、基本クラスを介してのみインスタンスにアクセスしたいと考えています。2 番目の部分では、Derived2
型情報が失われることに注意してください。そのためstorage
、1 つの派生インスタンスが含まれているという保証のみが残されます。
配置 new は宛先ポインターを調整しないreinterpret_cast
ため、基本クラスにアップキャストするために使用することになります。static_cast
より適切な方がポインターを調整する場合があるため、これは危険であることがわかりました。[1]
実際、未定義の動作を引き起こします。完全なコードはここ Coliru (g++ 4.9.0) にあります。実行時にすぐにクラッシュします。一方、私の PC (g++ 4.8.2) では、すべて問題ありません。g++ 4.9 では、関数を呼び出す前に両方のポインターを出力すると、同じ値が表示され、機能することに注意してください。
そこで、私は問題を逆に考えようとしました: へのポインターBase
が と等しくなるように、派生インスタンスを微調整しましたstorage
。
運がない。g++ 4.8 では問題なく動作しますが、g++ 4.9 では問題が発生します。
編集:考えてみると、上記はそれほどスマートではありません。なぜなら、派生インスタンスが前に storage
終わったらどうなるか... 痛い。
だから私の質問は:私が達成しようとしていることに対する解決策はありますか? または、[1] で言及されているケースは、クラスのサブセット (仮想継承がないなど) で動作するコードを記述できるほど十分に明確に定義されていますか?
c# - 基本クラスから拡張への C# の暗黙的なキャスト (System.Reflection.Assembly)
私はc-sharp-compilerresults-generateinmemoryというプロジェクトに取り組んできました。
「クラス検出」を実装するために、多くのコードを書いてきました。これはクールに動作しますが、「System.Reflection.Assembly」の派生クラスとしてすべてを実装すると、はるかに効率的であることに気付きました。
そのため、作成された新しい派生クラスで問題が発生しました。基本クラスを新しい派生クラスに割り当てようとすると、通常のdid you miss an explicit cast
エラーだけでエラーがスローされます。
C# は拡張型の暗黙的なキャストを行ったと思いますか?
だから私はこのようなソースコードを持っています...
C# を書き始めてまだ 2 週間しか経っていないので、質問しなければなりません...
クラスに基本クラスを追加するにはどうすればよいですか?
ここでの質問... C# で基本クラスから派生クラスに暗黙の演算子を記述できないのはなぜですか?
これは、答えを誤解していない限り、私のキャスティングが機能するはずであることを示しているようです。
c++ - スタック上に作成されたオブジェクトをアップキャストに使用できないのはなぜですか?
これはアップキャストですか?そうでない場合は、その理由を説明してください。前もって感謝します。
C++ コード: