誤って、私はファクトリ関数を使用し、返されたポインタをどこにも格納しませんでした。私の質問が愚かであるかどうかわからない場合 しかし、私たちが動的に関数内でメモリを割り当てると、そのメモリは返されますが、格納するポインタはありません。だからメモリには何が起こるのですか?それはそれを削除する機会が全くないということですか?そして、このような :プログラムが閉じるまでありポインタがない場合はどうなりますか、ファクトリ関数ポインタを取得しますか?
Aclass* getAclass()
{
return new Aclass();
}
int main()
{
getAclass();
}
良い工場は 'std :: unique_ptr'を返します。この特定の問題を解決するだけでなく、より現実的なコードの一般的な問題も解決します: 'std :: cout << getAclass() - > getDescription();また、工場に 'makeFoo'という名前を付けるようになっている慣例がありますので、彼らはゲッターではないことを知っています。 –
MSalters