問題タブ [object-lifetime]
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++ - C ++標準のメンバーライフタイムステートメントに一時的にバインドされるポイントは何ですか?
この質問では、ユーザーHappyMittalがC++ 03標準のセクション12.2.5を引用しています。コンストラクターのctor-initializer(12.6.2)の参照メンバーへの一時的なバインドは、コンストラクターが終了するまで持続します。
とにかくそれはどのように役立つことができますか?つまり、コンストラクターが終了すると一時的に破棄されますが、参照はバインドされたままになります。これで、既に破棄されたオブジェクトになります。
外側のオブジェクトの存続期間全体にわたってぶら下がっている参照がまだある場合、一時的な存続期間を慎重に指定することのポイントは何ですか?この動作はどのシナリオで役立ちますか?
asp.net-mvc - Unity2.0およびasp.netmvcを使用してhttpリクエストごと(またはhttpコンテキストごと)に依存性を注入する方法
私はこれについて多くの情報を読みましたが、これが今日どのように正確に行われるべきかについて、現在(2011年1月現在)何も見つかりません。詳細なしで、答えがあるように見えるいくつかの良い投稿を読みました。古いpre-unity-2アプローチは、主にカスタムライフタイムマネージャーを作成しました。今それを行う最良の方法は、リクエストの最初に作成され、リクエストの最後にコンテナ管理のライフタイムを使用して破棄される子コンテナを使用することです。別の人は、createchildcontainerで階層的なライフタイムを使用してこれを達成したと述べました。
私が見つけた資料のほとんどは、私が試したApplication_BeginRequest中に子コンテナーを作成することを示しています。私のコントローラーファクトリ(MvcContribのIoCControllerFactory)は、Application_Start(MvcContribのIDependencyResolverの実装)中に登録されたコンテナーを使用するため、これは機能しません。これは、デフォルト/ルートコンテナーです。
web.configにユニティセットアップがあり、子コンテナーを作成できますが、DIにそれらを使用してリクエストごとにシングルトンを作成するコントローラーを取得できないようです。ルートの代わりに、コントローラーファクトリで使用する特別なコンテナーを作成する必要がありますか?コンテナ管理または階層化する必要がありますか?リクエストごとにDependencyResolverを再設定するべきではありませんか?
c++ - C++で不変条件をチェックする
C ++でクラスの不変条件をチェックするための確立されたパターンはありますか?
理想的には、不変条件は、各パブリックメンバー関数の最初と最後に自動的にチェックされます。私の知る限り、クラス付きのCは特別なメンバー関数を提供してbefore
いafter
ましたが、残念ながら、契約による設計は当時あまり人気がなく、Bjarne以外はその機能を使用していなかったため、彼はそれを削除しました。
もちろん、check_invariants()
各パブリックメンバー関数の最初と最後に手動で呼び出しを挿入するのは面倒でエラーが発生しやすくなります。RAIIは例外を処理するための最適な武器であるため、不変チェッカーを最初のローカル変数として定義する次のスキームを考え出しました。不変チェッカーは、構築時と破棄時の両方で不変条件をチェックします。
質問#0:名前のないローカル変数を宣言する方法はないと思いますか?:)
コンストラクタの最後とデストラクタの最初check_invariants()
で手動で呼び出す必要があります。ただし、多くのコンストラクタボディとデストラクタボディは空です。その場合、最後のメンバーとしてを使用できますか?Foo
Foo
invariants_checker
質問1:オブジェクトがまだ作成中であっても、そのポインターを介してすぐに呼び出すコンストラクターに渡すthis
ことは有効ですか?invariants_checker
check_invariants
Foo
質問2:このアプローチで他に問題がありますか?改善できますか?
質問3:このアプローチは新しいものですか、それともよく知られていますか?より良い解決策はありますか?
c++ - デストラクタからの仮想関数の間接呼び出し
この免責事項を作成させてください。コンストラクタまたはデストラクタでの仮想関数呼び出しについて明確に理解しています。
以下のコードでは、実験的な目的でのみ仮想デストラクタを回避しようとしています。
今私の質問は:
主に Destroy fun の呼び出しは、適切な仮想関数を呼び出します。Destroy Function への呼び出しは、適切な仮想楽しみを呼び出す必要があると期待しています。
ただし、Base デストラクタ呼び出しに配置された同じ Destroy 関数は、Base 仮想関数です。
これは静的バインディングまたはコンパイラの最適化に関連していますか?
.
.
c++ - boost::bindと一時変数への参照
私がメソッドを持っているとしましょう:
boost :: functionを作成できますか:
f
ここで、tempは、が呼び出される前に削除されたchar*です。
c++ - 参照パラメーターの有効期間
以下を考えると:
オブジェクト p の存続期間が終了すると、_myPrivate はどうなりますか? 編集: _myPrivate を使用してオブジェクト p のコピーにアクセスできますか?
ありがとう!
ダン
c++ - dll/バンドル内のSingeltonライフタイム
Macでdllまたはバンドルのコンテキストでシングルトンクラスを作成すると、シングルトンクラスは一度インスタンス化され、dllのすべてのインスタンスで使用されます。アプリケーションのプラグインとしてdllを使用しています。ここで、次のことが頭に浮かびました。シングルトンクラスを使用すると、プラグインの複数のインスタンス間で共有されます。ただし、これにより、シングルトンクラスの存続期間を効率的に管理することが困難になります。私が考えることができる唯一の方法は、参照カウントを使用し、参照カウントが0のときにシングルトンに自分自身を削除させることです。
誰かがそれについてもっと良いアイデアを持っていますか?シングルトンオブジェクトをdllの1つのインスタンスに制限する良い方法はありますか?
言語はC++ですが、ソリューションはWindowsとMacで動作する必要があります(ここではバンドルになっています)。dllまたはバンドルの仕様はアプリケーションによって指定されるため、ここで変更する必要はありません。
c++ - スコープ外になった後、コンストラクターに渡された値はどうなりますか?
これに対する答えを探し回っていますが、私の問題に似たものは見つかりませんでした。
コンストラクターでポインターFoo
を取るクラスがあります。それを と呼びましょう。const char*
私のコードでは、パラメーターとして を使用して新しいを作成する必要がありFoo
ます。問題は、文字列が範囲外になると、Foo に渡された値 (またはポインター、これは私が混乱している場所です..) が無効になることです。std::string
.data()
文字列が無効になったので、Fooconst char*
も無効です。
Foo
文字列が範囲外になったときに無効にならないように、文字列のデータの値を渡すにはどうすればよいですか?
c++ - これは一時的な std::string の適切な使用ですか?
私はC++で一時的な保証された寿命を読みました.一時的な文字列は、割り当てが評価されるまで、つまり、これを期待どおりに機能させるのに十分な長さで存続すると信じています.
以前にstd::string
生涯関連のバグに遭遇したことがあります(それが何であったか思い出せません)私はむしろ再確認したいと思います...
c++ - C++ -- システムは返された文字をどこに保存しますか?
質問> 関数内のローカル変数へのポインターまたは参照を返すべきではありません。したがって、戻り変数「aa」は funA の関数内のローカル変数ではありません。では、それは何ですか?
ありがとうございました