Tudo bem, então não estou dizendo que é exatamente por isso que os objetos são tipos de referência ou são passados por referência, mas posso dar um exemplo de por que essa é uma ideia muito boa a longo prazo.
Se não me engano, quando você herda uma classe em C ++, todos os métodos e propriedades dessa classe são fisicamente copiados para a classe filho. Seria como escrever o conteúdo dessa classe novamente dentro da classe filho.
Portanto, isso significa que o tamanho total dos dados em sua classe filho é uma combinação dos itens da classe pai e da classe 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;
}
O que mostraria a você:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Isso significa que se você tiver uma grande hierarquia de várias classes, o tamanho total do objeto, conforme declarado aqui, seria a combinação de todas essas classes. Obviamente, esses objetos seriam consideravelmente grandes em muitos casos.
A solução, acredito, é criá-lo na pilha e usar ponteiros. Isso significa que o tamanho de objetos de classes com vários pais seria administrável, de certa forma.
É por isso que usar referências seria um método mais preferível para fazer isso.