問題タブ [overriding]
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.
python - Pythonで「+=」をオーバーライドしますか?(__iadd __()メソッド)
Pythonで+=をオーバーライドすることは可能ですか?
c# - C#:リターンタイプのオーバーライド
C#でリターンタイプをオーバーライドする方法はありますか?もしそうなら、どのように、そしてそうでなければ、なぜそしてそれを行うための推奨される方法は何ですか?
私の場合は、抽象基本クラスとその子孫とのインターフェースがあります。私はこれをやりたいです(実際にはそうではありませんが、例として!):
RadioactivePoo
もちろん、から継承しPoo
ます。
これが必要な理由は、Cat
オブジェクトを使用する人Excrement
がにキャストすることなくプロパティをPoo
使用できるようにするRadioactivePoo
ためです。たとえば、ユーザーが放射性のうんちを必ずしも認識または気にしないリストCat
の一部である可能性があります。Animal
それが理にかなっていることを願っています...
私が見る限り、コンパイラは少なくともこれを許可していません。だから不可能だと思います。しかし、これに対する解決策として何をお勧めしますか?
css - 連続して呼び出される2つのスタイルシートの2つ目は、最初のスタイルシートで定義されたすべてのスタイルをオーバーライドできますか?
次のように呼び出される2つのスタイルシートにリンクするHTMLページがある場合:
これらの2つのファイルがまったく同じスタイル名を定義している場合original.css
、スタイル設定されたページの結果に影響を与えず、すべてのスタイルがで定義されたスタイルから取得されるというのは本当override.css
ですか?
私が尋ねる理由はこれです:私はoriginal.css
変更できないものがあり、このファイルを呼び出すコードの行に触れたくありません。代わりに、オリジナルが呼び出された直後に新しいファイルへの呼び出しを挿入し、オリジナルで定義されているすべてをオーバーライドしたいと思います。これがうまくいくかどうか、それが賢明かどうかなどはわかりません。
c++ - 新しい演算子が呼び出されないのはなぜですか
動的にロードされたライブラリ(dlopenなどでロードされた)が実際に独自の新しい削除演算子を使用し、呼び出し元のプログラムで定義されたものではないことを確認したかったのです。だから私は次のlibrary.cppを書きました
でコンパイルしました
または雇用されたロシア人が試みることを提案したように(しかし結局何も変わらなかった)
クラスBaseは、この値を取得するためにint値と関数get_value()のみを保持しています。その後、client.cppをこのように書きました
でコンパイルしました
クライアントを実行すると、「呼び出されたクライアントの新規」と「呼び出されたクライアントの削除」のみが表示されます。コンパイラスイッチ-Bsymbolicをライブラリに使用しても、EmployedRussianが提案しました。
今:何が悪かったのですか?共有ライブラリは独自のnew/deleteを使用していると思ったので、ファクトリの隣にライブラリコードでデストラクタdestroyを作成するように指定する必要があります。
補足質問:destroy(Base * p)関数が必要なのはなぜですか?この関数がクライアントのdelete-operatorのみを呼び出す場合は、自分でそれを行うこともできます。つまり、最後の行の次のdestroy_module(a)の代わりに「deletea」を実行します。
私が見つけた回答:ライブラリは、new/delete-operatorのペアも提供できます。したがって、最初にライブラリの新しいものを使用し、後でクライアントの削除を使用すると、おそらく落とし穴に踏み込むことができます。悲しいことに、これまで、自分のライブラリが独自の新規または削除を使用しているのを見たことがありませんでした...したがって、元の質問にはまだ回答されていません。
補足:私はLinuxプラットフォームについてのみ言及しています。
編集:重要な部分は、雇用されたロシアの回答へのコメントにあります。だから私は一言で言えば主な手がかりを与えています:このようにgccを呼び出す場合
ライブラリは独自のnew/delete演算子を使用します。そうでなければ結果
呼び出し側プログラムのnew/delete演算子を使用しているライブラリー内。雇用されたロシア人に感謝します!
javascript - 元のメソッドを失うことなくメソッドを置き換える方法は?
Date
オブジェクトのプロトタイプのメソッドを置き換えます (オーバーライド、改善、機能を追加します) 。これが私がやったことの単純化されたバージョンです:
標準メソッドを失いたくないので、元のメソッドを一時変数に割り当て、必要に応じて呼び出しています。
Date.prototype
名前空間を汚染せずにこれを行う方法はありますか?
私が求めているのは、これと同じ質問ですが、Javascript のみです。
c# - すべてを「仮想」にしてみませんか?
重複の可能性:
C#がデフォルトでメソッドを非仮想として実装するのはなぜですか?
私は主にC#、. NET 3.5について話していますが、一般に、すべてを「仮想」と見なさないことの利点は何でしょうか。つまり、子クラスのインスタンスで呼び出されるメソッドは、常に子のほとんどのバージョンを実行します。その方法の。C#では、親メソッドが「仮想」修飾子でラベル付けされていない場合、これは当てはまりません。例:
上記で観察された非仮想動作の利点は正確には何ですか?私が考えることができた唯一のことは、「親の作者が彼のメソッドを仮想化したくない場合はどうなるか」ということでした。しかし、そのとき、私はそのための良いユースケースを考えることができないことに気づきました。クラスの動作は非仮想メソッドの動作に依存していると主張する人もいるかもしれませんが、カプセル化が不十分であるか、メソッドを封印する必要があるように思われます。
これらの同じ線に沿って、「隠す」は通常悪い考えのようです。結局のところ、Childオブジェクトとメソッドが作成された場合、Parentをオーバーライドする特定の理由で作成されたようです。また、ChildがNonVirtual()を実装(および親を非表示)する場合、Child :: NonVirtual()を呼び出すことの「予想される」動作を多くの人が考える可能性のあるものを取得しないのは非常に簡単です。(「非表示」が発生していることに気付かないことがあるため、「期待」と言います)。
では、すべてに「仮想」動作を許可しないことの利点は何でしょうか。予期しない動作が発生しやすい場合に、非仮想の親を非表示にするための適切なユースケースは何ですか?
なぜ私がこの質問をするのか知りたい人がいたら、私は最近CastleProjectsDynamicProxyライブラリを調べていました。これを使用する際の主なハードルの1つは、プロキシするメソッド(またはプロパティ)が仮想である必要があることです。そして、これは開発者にとって常にオプションであるとは限りません(ソースを制御できない場合)。言うまでもなく、DynamicProxyの目的は、プロキシされたクラスと、プロキシで達成しようとしている動作(Loggingやメモ化の実装など)との結合を回避することです。そして、仮想メソッドにこれを強制的に実行させることで、代わりに達成されることは非常に薄いですが、DynamicProxyをプロキシしているすべてのクラスに鈍く結合します-想像してみてください。継承およびオーバーライドされることはありませんが、virtualというラベルの付いたメソッドがたくさんあります。
とにかく、そこでの欲求不満は、すべてが仮想であることがより明確であり(IMO、私は推測する)、おそらく(?)より多くの利点があるように見えるときに、非仮想の利点は何であるか疑問に思いました。
編集:主観的な答えがあるかもしれない質問のように見えるので、コミュニティウィキとしてラベル付けする
mysql - Magento Commerce との間のデータベース アクセス (I/O) をどのように行っていますか?
そのため、データベースをインポート、エクスポート、および変更したいと考えています。XMLでそれをしなければならないことを読んだことがありますが、彼らのドキュメントシステムをよく理解していません。これを説明する優れたチュートリアルも見つかりませんでした。非常に高価で短い本をゆっくりと読んでいますが、それは私の質問にいくらか答えていますが、もっと欲しがっています.
2 番目の質問として、独自のコードで情報やメールを送信できる注文システムが必要です。これは、特定の時間にオーバーライドまたは呼び出される何らかのタイプのプラグインになると思います。どんな情報でも役に立ちます。
.net - 2 つのオブジェクトが同じ基本クラスから継承されているかどうかを確認する方法は?
C++ .NET で Object::Equals をオーバーライドしようとしていますが、いくつかの問題が発生しています。
このコードは、o が IState の場合に正常に機能します。ただし、State を持つ IState から継承します。同じ内容の State を渡すと、Equals 関数が true を返すようにしたいと思います。
State は IState と同じではありませんが、同じ基本クラスから継承されているかどうかを確認できる演算子はありますか? 演算子の typeid をオーバーロードすると役立つかもしれませんが、それには多くの問題があるようです
c# - C#for ASP.NETのメソッドをオーバーライドするときに、基本クラスの実装を呼び出す必要がありますか?
メソッド/関数をオーバーライドすると、派生クラスでの実装が基本クラスでの実装から再定義されることを理解しています。
今私を混乱させているのは、ASP.NETのクラスをオーバーライドするとCreateChildControls()
(特別な理由なしにランダムに選択した)、VS2008は次のように自動生成します。
十分に良いことに、デフォルトの実装は基本クラス'を呼び出すだけですCreateChildControls()
。
したがって、コードを実行したい場合、方法がわからないので、これを実行するbase.CreateChildControls()
必要があります。
または、何を完全に無視しbase.CreateChildControls()
て、ただ実行する