Dada una clase "A" existe y es correcta. ¿Cuáles serían algunos de los resultados negativos de usar una referencia a "A" en lugar de un puntero en una clase "B"? Es decir:¿Cuáles son algunas de las desventajas de usar una referencia en lugar de un puntero?
// In Declaration File
class A;
class B
{
public:
B();
~B();
private:
A& a;
};
// In Definition File
B::B(): a(* new A())
{}
B::~B()
{
delete &a;
}
Se omite código adicional para su posterior corrección de "B", tales como el operador constructor de copia y asignación, sólo quería demostrar el concepto de la cuestión.
Interesante. No he visto ese código antes. Puede ser, esta es solo una forma de evitar la desreferenciación y el uso de '->' y aún hacer 'a' dinámicamente asignado, por alguna razón:? +1 para la pregunta. –
¿Cuál es el punto de esto, en lugar de simplemente 'A a;'? ¿No sería eso mejor que ambas referencias o punteros? – tenfour
@tenfour en muchos casos, pero es un ejemplo simplificado: supongamos que el valor detrás de 'a' es creado por una fábrica. – justin