問題タブ [derived-class]
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.
java - 派生クラスのコンストラクターが常に基本クラスのコンストラクターにアクセスする必要があるのはなぜですか?
質問用紙の 1 つでこの質問を見ました。
派生クラスのコンストラクターが常に基本クラスのコンストラクターにアクセスする必要があるのはなぜですか?
質問が有効かどうか疑問に思っていますか?
c++ - 派生クラスのオーバーライドされたメソッドに対して「仮想」がオプションであるのはなぜですか?
メソッドがクラス内で宣言されるvirtual
と、派生クラスでのオーバーライドも自動的に考慮virtual
され、C ++言語ではvirtual
、この場合、このキーワードがオプションになります。
virtual
私の質問は:オプションにする理由は何ですか?
コンパイラーにそのように言われる必要は絶対にないことは知っていますが、そのような制約がコンパイラーによって強制されれば、開発者は恩恵を受けると思います。
たとえば、他の人のコードを読んだときに、メソッドが仮想であるかどうか疑問に思うことがあり、それを決定するためにそのスーパークラスを追跡する必要があります。また、一部のコーディング標準(Googlevirtual
)では、すべてのサブクラスにキーワードを配置する必要があります。
c# - コンストラクターでの継承の使用(publix X():y)
次のコードを見たばかりですが、コンストラクター宣言での基本クラスの派生がわかりません。これは何ですか?これは通常の方法で可能ですか?
c++ - 派生テンプレート クラスから関数を呼び出す
私の基本クラス:
派生テンプレート クラス:
このコードには別の問題がありました (別の投稿で回答済み) が、現在、これを実行しようとすると、
未定義のシンボル: "Element::plus(Element const&)"、参照元:
Vectorin main.o の vtable
"Element::Element()"、参照元:
Vector::Vector()in main.o
Vector::Vector( double const&、double const&、double const&) in main.o
"Element::minus(Element const&)"、参照元:
Vectorin main.o の vtable
"typeinfo for Element"、参照元:
Vectorin main.o
ld の typeinfo:シンボルが見つかりません
collect2: ld が 1 つの終了ステータスを返しました
これは、派生したテンプレート クラスが基本クラスと同じファイルに格納されておらず、それがコンパイラの問題を引き起こしているためでしょうか (ヘッダー ファイルで Vector クラス全体を定義しなければならなかったのと同様です)?
私は C++ にかなり慣れていないので、まだ vtables とは何か、どのように機能するのかを読んでいますが、まだこれを理解することはできません。
c++ - メンバー関数へのポインター、テンプレートと継承の混同
任意のデータを保持し、関連するクラスのメンバー関数を呼び出す汎用の「コールバック」オブジェクトを作成しようとしています。内部ポリシーにより、Boost を使用できません。
コールバック オブジェクトは次のようになります。
そして、それが動作するクラス:
次のテストは期待どおりに機能します。
ここまでは順調ですね。
ただし、同僚がCallback
を使用する代わりにクラスから派生しようとするtypedef
と、互換性のないポインターが原因でコンパイル エラーが発生しました。
Callback クラスで「奇妙な繰り返しテンプレート パターン」を使用してみましたが、派生クラスを動作させることができましたが、typedef
メソッドを使用するコードが壊れました。
私の質問は:
クラスのユーザー側で余分な作業を必要とせずに、両方のケースで動作するようにクラスを変更するにはどうすればよいですか?Callback
asp.net - ASP.NET セッション中にカスタム "User" オブジェクトを格納するのに最適な場所はどこですか?
セッション内のページ全体でユーザー (およびユーザーの所属先) に関する情報を記憶する必要がある ASP.NET アプリケーションがあります。
これは、特定のサイズのほぼすべての ASP.NET アプリケーションの要件であると思います。私は何年にもわたっていくつかの異なるアプローチを使用してきました。
過去に、次のようにクエリ文字列パラメーターで id を渡しました。
次に、各ページで (データベースから) オブジェクトをインスタンス化します。
それを行う別の一般的な方法は、オブジェクトをセッション変数に格納することです。
DB へのアクセスを節約できますが、User オブジェクトが複雑で、サイトに多くの同時ユーザーがいる場合に使用されるメモリが心配です。
最近、次のように、マスター ページでパブリック プロパティを使用するアプリケーションを継承しました。
これによりキャストが保存され、読みやすくなると思いますが、パフォーマンスが良いか悪いかはわかりません。また、getter には、プライベート値が null の場合、Session 変数から取得しようとするロジックもありますが、それが使用されていないか (またはgetごとに使用されている!?) かどうかはわかりません。
私の最新のアイデアは、私のページクラスを使用することです。標準の System.Web.UI.Page 基本クラスから派生したカスタム ページ クラスがあります。パブリック プロパティとして CurrentUser などのオブジェクトが含まれます。これはうまくいくようです。私はそれがさらに好きです。
しかし、その裏で何が起こっているのか、私には本当にわかりません。どちらのアプローチが優れているか、またその理由について意見を言える人はいますか?
これを行うための別の提案も歓迎します。
更新: trace.axd と Trace.Write を使用していくつかのチェックを行ったところ、マスターページ バージョンもカスタム ページ クラス バージョンもページ間の値を「記憶」していないようです。「get」メソッドには、User プロパティが null かどうかをチェックするコード行があり、null の場合はセッション変数から読み取ります。これは、特定のページでページがプロパティ (Master.User または派生クラスの this.User) に初めてアクセスしたときに発生し、その後の要求は (セッション変数に移動することなく) 値を取得できます。
c++ - パラメータとして基本インスタンスを持つ派生クラスのコンストラクタ
私はこのコードを持っています:
行B b2 = b1
がコンストラクターを呼び出さずB::B(const A &a)
、代わりに呼び出すのはなぜA::A(const A &a)
ですか? コンパイラにそうするように指示するにはどうすればよいですか?
c++ - C++ サブクラスに明示的なコンストラクターが必要なのはなぜですか?
コンストラクターを宣言および定義する基本クラスがありますが、何らかの理由で、パブリックに派生したクラスがそのコンストラクターを認識していないため、派生クラスで転送コンストラクターを明示的に宣言する必要があります。
上記のコードでは、WireCount1 wireCount1(100)
宣言はコンパイラによって拒否されます (「'WireCount1::WireCount1(int)' の呼び出しに一致する関数はありません」) が、 mywireCount0
とwireCount2
宣言は問題ありません。
に示されている明示的なコンストラクターを提供する必要がある理由を理解しているかどうかはわかりませんWireCount2
。コンパイラが のデフォルトのコンストラクタを生成し、WireCount1
そのコンストラクタがコンストラクタを隠しているWireCount0
ためですか?
参考までに、コンパイラはi686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5659)
.
oop - 派生クラスには必ずコンストラクターが必要ですか?
私の問題はこのようなものです。XMLUtility クラスがあります
そして
このクラスは、非常に基本的な xml 設定ファイルの機能を提供します。
そのため、もう少し高度な設定の処理が必要です。そこで、別のクラスを作成し、XMLUtility クラスから派生させました。
したがって、私の最初の考えは、基本クラスのコンストラクターを呼び出すため、このクラスのコンストラクターは必要ないということでした。しかし、私は間違っていました。
私の質問は、上記のコードが正しいかどうかです。このコンストラクター内にもチェックプロセス全体を記述する必要がありますか、それとも基本クラスのコンストラクターによって処理されますか? 空のコードブロックだけが正しいですか?
iphone - iPhoneの最良の方法は、UITableViewControllerを派生させます
個人用の UITableViewController を作成し、それをインターフェイス ビルダーを使用して UIViewController で使用したいのですが、これを行う最善かつ迅速な方法は何ですか?