En C # y Java, usa new para crear una instancia de cualquier clase y luego no necesita preocuparse por destruirla más tarde.
C ++ también tiene una palabra clave "nuevo" que crea un objeto, pero a diferencia de Java o C #, no es la única forma de crear un objeto.
C ++ tiene dos mecanismos para crear un objeto:
Con la creación automática, crea el objeto en un entorno de ámbito: - en una función o - como miembro de una clase (o estructura).
En una función, la crearía de esta manera:
int func()
{
A a;
B b( 1, 2 );
}
Dentro de una clase, normalmente lo crearía de esta manera:
class A
{
B b;
public:
A();
};
A::A() :
b( 1, 2 )
{
}
En el primer caso, los objetos se destruyen automáticamente cuando se sale del bloque de alcance. Esto podría ser una función o un bloque de alcance dentro de una función.
En el último caso, el objeto b se destruye junto con la instancia de A en la que es miembro.
Los objetos se asignan con nuevo cuando necesita controlar la vida útil del objeto y luego se requiere eliminar para destruirlo. Con la técnica conocida como RAII, usted se encarga de eliminar el objeto en el punto en que lo crea colocándolo dentro de un objeto automático y espera a que el destructor de ese objeto automático surta efecto.
Uno de estos objetos es shared_ptr, que invocará una lógica de "borrador", pero solo cuando se destruyen todas las instancias de shared_ptr que comparten el objeto.
En general, si bien su código puede tener muchas llamadas a nuevo, debe tener llamadas limitadas para eliminar y siempre debe asegurarse de que se llamen desde destructores u objetos "eliminadores" que se colocan en punteros inteligentes.
Sus destructores tampoco deberían arrojar excepciones.
Si hace esto, tendrá pocas pérdidas de memoria.