デリータをタイプ消去できるという利点があるためboost::/std::shared_ptr
、次のような素敵なことを行うことができます
#include <memory>
typedef std::shared_ptr<void> gc_ptr;
int main(){
gc_ptr p1 = new int(42);
gc_ptr p2 = new float(3.14159);
gc_ptr p3 = new char('o');
}
そして、正しい削除が保存されているため、これによりすべてのポインターが正しく削除されます。
インターフェイスのすべての実装が常にshared_ptr<Interface>
(または) で作成されることを保証する場合、実際にデストラクタmake_shared<Interface>
が必要ですか? とにかくvirtual
宣言しますが、知りたいのは、初期化された型を常に削除するためです(別のカスタムデリータが指定されていない限り)。virtual
shared_ptr