Yanlışlıkla, bir fabrika işlevi kullandım ve döndürülen işaretçiyi herhangi bir yere kaydetmedim. Emin değilim Sorgum aptalca ya da değil ise, ama ne olursa olsun, eğer dinamik olarak, bir fonksiyonda bellek tahsis edersek, o hafızayı geri göndeririz, ama saklamak için herhangi bir işaretçi sağlamaz mıyız? hafızaya ne olacak? Bunu silmek için hiç şansın olmadığı anlamına mı geliyor? ve bunun gibi : Program kapatır ve işletim sistemi bu bellek reclaims kadarİşaretçi yoksa, fabrika işlevi işaretçisini alırsa ne olur?
OradaAclass* getAclass()
{
return new Aclass();
}
int main()
{
getAclass();
}
İyi bir fabrika bir 'std :: unique_ptr' döndürür. Bu özel sorunu çözüyor, ama aynı zamanda daha gerçekçi koddaki genel problemi çözüyor: “std :: cout << getAclass() -> getDescription();” Örneğin. Ayrıca, fabrikaları “makeFoo” olarak adlandırmak için büyüyen bir sözleşme var. –
MSalters