เพื่อแยกความแตกต่างระหว่างคลาสและโครงสร้าง เราต้องเข้าใจก่อนว่าทั้งโครงสร้างและคลาสดูเหมือนจะเท่ากันในบริบทของการถือครองและกำหนดข้อมูล ทั้งสองสิ่งนี้สามารถกำหนดและเก็บค่าดีฟอลต์บางอย่างไว้ในสมาชิกข้อมูล แต่ถ้าเราพิจารณานอกเหนือจากบริบทนี้ Class จะมีความยืดหยุ่นมากขึ้นพร้อมกับการทำงานเมื่อเทียบกับโครงสร้าง
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่างคลาสและโครงสร้าง
ซีเนียร์ เลขที่ | คีย์ | คลาส | โครงสร้าง |
---|---|---|---|
1 | ประเภทข้อมูล | ข้อมูลที่กำหนดไว้ในคลาสจะถูกเก็บไว้ในหน่วยความจำเพื่อเป็นข้อมูลอ้างอิงและมีที่อยู่เฉพาะเพื่อให้เข้าถึงได้ ดังนั้นจึงสามารถระบุได้ว่า Classes เป็นประเภทอ้างอิง | ในทางกลับกัน ในกรณีของโครงสร้าง ค่าของสมาชิกข้อมูลจะถูกจัดเก็บโดยตรงทั้งในสแต็กหรือแบบอินไลน์ที่มีประเภท ดังนั้นโครงสร้างจะถือเป็นประเภทค่า |
2 | ที่เก็บข้อมูล | ตามที่กล่าวไว้ข้างต้น สมาชิกข้อมูลจะถูกเก็บไว้เป็นข้อมูลอ้างอิงในกรณีที่ Class และประเภทการอ้างอิงได้รับการจัดสรรในหน่วยความจำฮีพ | ในทางกลับกัน ค่าตรงของโครงสร้างจะถูกจัดเก็บ ดังนั้นประเภทค่าจะถูกจัดสรรในหน่วยความจำสแต็ก |
3 | ตัวสร้าง | คลาสสามารถกำหนดได้ด้วยคอนสตรัคเตอร์และดีคอนสตรัคเตอร์เนื่องจากมีการใช้งานฟังก์ชันต่างๆ | ในทางกลับกัน โครงสร้างไม่สามารถมี Constructor หรือ De-constructor ได้ เนื่องจากไม่มีการนำไปปฏิบัติดังกล่าว |
4 | ทันที | เมื่อ Class นำมาใช้กับ Constructor ซึ่ง Class สามารถสร้างอินสแตนซ์ของอินสแตนซ์ด้วยคีย์เวิร์ดใหม่ได้ | ในทางกลับกัน โครงสร้างสามารถสร้างอินสแตนซ์ได้โดยไม่ต้องใช้คีย์เวิร์ดใหม่ |
5 | การสืบทอด | Class สามารถสืบทอดคุณสมบัติจากคลาสหลักได้ เนื่องจากรองรับคุณสมบัติ Inheritance | ในทางกลับกัน โครงสร้างไม่รองรับการสืบทอด |
6 | ตัวแก้ไขที่ได้รับการป้องกัน | เราสามารถใช้ตัวแก้ไขที่ได้รับการป้องกันกับสมาชิกข้อมูลที่กำหนดไว้ในคลาส เนื่องจาก Class รองรับตัวดัดแปลงที่ได้รับการป้องกัน | ในทางกลับกัน โครงสร้างไม่รองรับตัวแก้ไขที่ได้รับการป้องกัน |