Ho visto molti consigli che è meglio fare Type object;
di
Type* object = new Type();
in C ++ quando possibile-cioè, riduci al minimo l'utilizzo di new
. Capisco il razionale dietro questo e lo apprezzo.
Ma secondo la mia comprensione, per fare pratica l'inversione di dipendenza richiede dei puntatori, per esempio:
Type* object = new Implementation();
dove Type
è astratto (vale a dire contiene almeno un metodo virtuale puro) e Implementation
è concreto. Non è possibile fare
Type object = Implementation();
perché ciò significa:
Type object;
object = Implementation();
che richiede inizialmente la creazione di object
come Type
, ma ciò non può essere fatto, poiché Type
è astratto.
Esiste una tensione intrinseca tra il principio di inversione delle dipendenze ed evita new
quando si usa C ++? In tal caso, quali modelli / principi / pratiche possono essere utilizzati per attenuare questa tensione?