「新しい」キーワードを使用してwxWidgetsの
-
21-08-2019 - |
質問
wxWidgetsのために、なぜあなたが言うする必要があります:
MyFrame *frame = new MyFrame
の代わりに:
MyFrame frame;
2つの違いは何ですか?私は理由があるかと思ったもう一つは読み立派で使いやすいですが、すべての例は、最初に使用します。
ただ、明確にするために、私は2番目のバージョンでは動作しません知っているが、代わりに第二の最初の形式を使用することにつながる具体的な設計上の決定があります場合、私は思ったんだけど。 TIAます。
解決
最初は、ヒープ上の新しいMyFrameとインスタンスを割り当て、それへのポインタを返します。第二は、直接スタックに新しいMyFrameとインスタンスを作成します。
あなたが最初の構文を使用する必要がある理由は、あなたがそのようなウィンドウとして、他のUIエレメントには、このフレーム(UIエレメント)を追加することです。ウィンドウは、フレームへのポインタを取り、子として追加されます。
あなたが2番目の構文を使用する場合は、は、あなたがコンパイルうあなたのスタックオブジェクト(&フレーム)へのポインタを渡す必要があるだろうが、その後、すぐにあなたの方法を返すように、フレームのデストラクタは、フレームが外に行くであろうからと呼ばれるになるだろう範囲。これはあなたの窓の内部リファレンスを「壊す」でしょう。
他のヒント
あなたが使用している場合は「新しい」あなたは、ヒープ上のフレームを割り当てています。それ以外の場合は、スタック上に割り当てられていますし、スタックフレームの終了時に削除されます。
所属していません StackOverflow