Okay, ich sage nicht, dass dies genau der Grund ist, warum Objekte Referenztypen sind oder als Referenz übergeben werden, aber ich kann Ihnen ein Beispiel geben, warum dies auf lange Sicht eine sehr gute Idee ist.
Wenn Sie eine Klasse in C ++ erben, werden alle Methoden und Eigenschaften dieser Klasse physisch in die untergeordnete Klasse kopiert. Es wäre, als würde man den Inhalt dieser Klasse wieder in die Kinderklasse schreiben.
Dies bedeutet, dass die Gesamtgröße der Daten in Ihrer untergeordneten Klasse eine Kombination aus dem Inhalt der übergeordneten Klasse und der abgeleiteten Klasse ist.
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;
}
Welches würde Ihnen zeigen:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Dies bedeutet, dass bei einer großen Hierarchie mehrerer Klassen die hier angegebene Gesamtgröße des Objekts die Kombination aller dieser Klassen ist. Offensichtlich wären diese Objekte in vielen Fällen beträchtlich groß.
Ich glaube, die Lösung besteht darin, sie auf dem Haufen zu erstellen und Zeiger zu verwenden. Dies bedeutet, dass die Größe von Objekten in Klassen mit mehreren Elternteilen in gewissem Sinne überschaubar wäre.
Aus diesem Grund ist die Verwendung von Referenzen eine bessere Methode, um dies zu tun.