D'accord, je ne dis pas que c'est exactement pourquoi les objets sont des types de référence ou passés par référence, mais je peux vous donner un exemple de la raison pour laquelle c'est une très bonne idée à long terme.
Si je ne me trompe pas, lorsque vous héritez d'une classe en C ++, toutes les méthodes et propriétés de cette classe sont physiquement copiées dans la classe enfant. Ce serait comme réécrire le contenu de cette classe à l'intérieur de la classe enfant.
Cela signifie donc que la taille totale des données de votre classe enfant est une combinaison des éléments de la classe parent et de la classe dérivée.
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;
}
Ce qui vous montrerait:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Cela signifie que si vous avez une grande hiérarchie de plusieurs classes, la taille totale de l'objet, telle que déclarée ici, serait la combinaison de toutes ces classes. De toute évidence, ces objets seraient considérablement volumineux dans de nombreux cas.
La solution, je crois, est de le créer sur le tas et d'utiliser des pointeurs. Cela signifie que la taille des objets des classes avec plusieurs parents serait en quelque sorte gérable.
C'est pourquoi l'utilisation de références serait une méthode plus préférable pour ce faire.