Bien, no digo que esta sea exactamente la razón por la cual los objetos son tipos de referencia o pasados por referencia, pero puedo darle un ejemplo de por qué es una muy buena idea a largo plazo.
Si no me equivoco, cuando hereda una clase en C ++, todos los métodos y propiedades de esa clase se copian físicamente en la clase secundaria. Sería como volver a escribir el contenido de esa clase dentro de la clase secundaria.
Esto significa que el tamaño total de los datos en su clase secundaria es una combinación de las cosas en la clase primaria y la clase derivada.
EG: #include
class Top
{
int arrTop[20] = {1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1};
};
class Middle : Top
{
int arrMiddle[20] = {1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1};
};
class Bottom : Middle
{
int arrBottom[20] = {1,2,3,4,5,6,7,8,9,9,8,7,6,5,4,3,2,1};
};
int main()
{
using namespace std;
int arr[20];
cout << "Size of array of 20 ints: " << sizeof(arr) << endl;
Top top;
Middle middle;
Bottom bottom;
cout << "Size of Top Class: " << sizeof(top) << endl;
cout << "Size of middle Class: " << sizeof(middle) << endl;
cout << "Size of bottom Class: " << sizeof(bottom) << endl;
}
Lo que te mostraría:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Esto significa que si tiene una gran jerarquía de varias clases, el tamaño total del objeto, como se declara aquí, sería la combinación de todas esas clases. Obviamente, estos objetos serían considerablemente grandes en muchos casos.
La solución, creo, es crearla en el montón y usar punteros. Esto significa que el tamaño de los objetos de las clases con varios padres sería manejable, en cierto sentido.
Es por eso que usar referencias sería un método más preferible para hacer esto.