ในกรณีของ 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 สำหรับอาร์เรย์