ในกรณีของ C/C++ เราสามารถกำหนดตัวแปร struct (หรือคลาสใน C++ เท่านั้น) ให้กับตัวแปรประเภทเดียวกันอื่นได้ ในขณะที่เรากำหนดตัวแปร struct ให้กับอีกตัวหนึ่ง สมาชิกทั้งหมดของตัวแปรนั้นจะถูกคัดลอกไปยังตัวแปร struct อื่น ในกรณีนี้ จะเกิดคำถามว่า โครงสร้างประกอบด้วยอาร์เรย์อย่างไร
ตอนนี้ เราต้องหารือเกี่ยวกับอาร์เรย์ ประเด็นหลักที่ควรทราบคือสมาชิกอาร์เรย์จะไม่ถูกคัดลอกเป็นสำเนาแบบตื้น คอมไพเลอร์จะทำ Deep Copy ให้สำเร็จโดยอัตโนมัติในกรณีของสมาชิกอาร์เรย์ ในโปรแกรมด้านล่าง การทดสอบโครงสร้างประกอบด้วยสมาชิกอาร์เรย์ str1[] เมื่อเราสามารถกำหนด st1 ให้กับ st2 ได้ st2 ก็มีสำเนาใหม่ของอาร์เรย์ ดังนั้น st2 จะไม่ถูกแก้ไขหรือเปลี่ยนแปลงเมื่อเราแก้ไขหรือเปลี่ยน str[] ของ st1
ตัวอย่าง
# include <iostream> # include <string.h> using namespace std; struct test{ char str1[20]; }; int main(){ struct test st1, st2; strcpy(st1.str1, "Tutorial Point"); st2 = st1; st1.str1[0] = 'X'; st1.str1[1] = 'Y'; /* Because copy was Deep, both arrays are different */ cout<< "st1's str = " << st1.str1 << endl; cout<< "st2's str = " << st2.str1 << endl; return 0; }
ผลลัพธ์
st1's str = XYtorial Point st2's str = Tutorial Point
ดังนั้น ในกรณีของคลาส C++ เราไม่จำเป็นต้องเขียนตัวสร้างการคัดลอกและตัวดำเนินการมอบหมายสำหรับสมาชิกอาร์เรย์ เนื่องจากพฤติกรรมเริ่มต้นคือ Deep Copy สำหรับอาร์เรย์