Được rồi vì vậy tôi không nói đây chính xác là lý do tại sao các đối tượng là loại tham chiếu hoặc được truyền qua tham chiếu nhưng tôi có thể cho bạn một ví dụ về lý do tại sao đây là một ý tưởng rất tốt trong thời gian dài.
Nếu tôi không nhầm, khi bạn kế thừa một lớp trong C ++, tất cả các phương thức và thuộc tính của lớp đó được sao chép vật lý vào lớp con. Nó sẽ giống như viết nội dung của lớp đó một lần nữa bên trong lớp con.
Vì vậy, điều này có nghĩa là tổng kích thước của dữ liệu trong lớp con của bạn là sự kết hợp của các thứ trong lớp cha và lớp dẫn xuất.
EG: #incolee
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;
}
Điều này sẽ cho bạn thấy:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
Điều này có nghĩa là nếu bạn có một hệ thống phân cấp lớn của một số lớp, tổng kích thước của đối tượng, như được khai báo ở đây sẽ là sự kết hợp của tất cả các lớp đó. Rõ ràng, những đối tượng này sẽ lớn đáng kể trong rất nhiều trường hợp.
Tôi tin rằng giải pháp là tạo ra nó trên heap và sử dụng các con trỏ. Điều này có nghĩa là kích thước của các đối tượng của các lớp có nhiều phụ huynh sẽ có thể quản lý được, theo một nghĩa nào đó.
Đây là lý do tại sao sử dụng tài liệu tham khảo sẽ là một phương pháp thích hợp hơn để làm điều này.