เอาล่ะฉันไม่ได้บอกว่านี่คือสาเหตุที่วัตถุเป็นประเภทอ้างอิงหรือผ่านการอ้างอิง แต่ฉันสามารถให้คุณตัวอย่างว่าทำไมนี่เป็นความคิดที่ดีมากในระยะยาว
ถ้าฉันไม่ผิดเมื่อคุณรับคลาสใน C ++ วิธีการและคุณสมบัติทั้งหมดของคลาสนั้นจะถูกคัดลอกลงในคลาสลูก มันจะเหมือนกับการเขียนเนื้อหาของชั้นเรียนนั้นอีกครั้งในชั้นเรียนของเด็ก
ดังนั้นนี่หมายความว่าขนาดรวมของข้อมูลในคลาสลูกของคุณคือการรวมกันของสิ่งต่าง ๆ ในคลาสแม่และคลาสที่ได้รับ
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;
}
สิ่งไหนที่จะแสดง:
Size of array of 20 ints: 80
Size of Top Class: 80
Size of middle Class: 160
Size of bottom Class: 240
ซึ่งหมายความว่าหากคุณมีลำดับชั้นขนาดใหญ่ของหลายคลาสขนาดรวมของวัตถุตามที่ประกาศไว้ที่นี่จะเป็นการรวมกันของคลาสเหล่านั้นทั้งหมด เห็นได้ชัดว่าวัตถุเหล่านี้มีขนาดใหญ่มากในหลายกรณี
ฉันเชื่อว่าวิธีแก้ปัญหาคือการสร้างมันบนฮีปและใช้พอยน์เตอร์ ซึ่งหมายความว่าขนาดของวัตถุของคลาสที่มีผู้ปกครองหลายคนจะสามารถจัดการได้ในแง่หนึ่ง
นี่คือเหตุผลที่ใช้การอ้างอิงจะเป็นวิธีที่ดีกว่าสำหรับการทำเช่นนี้