W porządku, więc nie mówię, że właśnie dlatego obiekty są typami referencji lub są przekazywane przez referencje, ale mogę podać przykład, dlaczego jest to bardzo dobry pomysł na dłuższą metę.
Jeśli się nie mylę, kiedy dziedziczysz klasę w C ++, wszystkie metody i właściwości tej klasy są fizycznie kopiowane do klasy potomnej. To tak, jakby pisać zawartość tej klasy ponownie w klasie podrzędnej.
Oznacza to, że całkowity rozmiar danych w klasie podrzędnej jest kombinacją elementów w klasie nadrzędnej i klasie pochodnej.
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;
}
Co pokaże ci:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Oznacza to, że jeśli masz dużą hierarchię kilku klas, zadeklarowany tutaj całkowity rozmiar obiektu będzie kombinacją wszystkich tych klas. Oczywiście w wielu przypadkach obiekty te byłyby znacznie większe.
Wierzę, że rozwiązaniem jest utworzenie go na stercie i użycie wskaźników. Oznacza to, że w pewnym sensie można zarządzać rozmiarem obiektów klas z kilkoma rodzicami.
Dlatego używanie referencji byłoby bardziej preferowaną metodą do tego.