私のアプリケーションでは、外部ソースから取得した型情報に基づいて新しいオブジェクトを動的に作成する必要があります。基本的に、このタスクを処理するクラス A があります。クラスは、クラス B、C、または D などを作成します (B がベースで、C と D が派生型であるとします)。次に、このオブジェクトを、タイプ B の参照パラメーターを期待するメソッドでいっぱいの既存のインターフェイスに渡したいと思います。最終的に、この動的に割り当てられたオブジェクトは、別のクラスの boost::shared_ptr メンバー オブジェクトに格納されます (reset() を使用します)。メソッド)。その時点で、メモリは誰かによって管理されています。
基本的に、これは私には悪い設計のようです (この動的に割り当てられたオブジェクトをあちこちに渡し、ある時点で逆参照し、後で再びポインターを取得しています)。一方で、インターフェイスのいくつかのメソッドを、参照ではなくポインターを取るように変更したくありません。そのインターフェイスをそのままにして、さらに処理するためにオブジェクトをインターフェイスに渡すときにポインターを逆参照したいと思います。参照パラメーターを取るメソッドがある場合、「ここではメモリ管理について心配していません」と「このオブジェクトは初期化されます-つまり、NULLにすることはできません」と言っていることをどこかで読みました。ただし、オブジェクトは最初はヒープ上に作成され、最終的にはそのメモリを管理する別のクラスによって「所有」されます。