โครงสร้างและคลาสจะคล้ายกันมากใน C++ ยกเว้นข้อแตกต่างบางประการ ดังนั้นรายละเอียดเกี่ยวกับความแตกต่างเหล่านี้จึงแสดงไว้ด้านล่างซึ่งช่วยในการตัดสินใจว่าจะใช้คลาสหรือโครงสร้างใน C++ เมื่อใด
ความแตกต่างระหว่างคลาสและโครงสร้าง
สมาชิกทั้งหมดของชั้นเรียนเป็นแบบส่วนตัวโดยค่าเริ่มต้น สิ่งนี้แตกต่างไปจากโครงสร้างเนื่องจากสมาชิกทั้งหมดของโครงสร้างเป็นสาธารณะโดยค่าเริ่มต้น
โปรแกรมที่แสดงคลาสในภาษา C++ มีดังต่อไปนี้ -
ตัวอย่าง
#include <iostream> using namespace std; class Example { int val; }; int main() { Example obj; obj.val = 20; return 0; }
โปรแกรมนี้ส่งผลให้เกิดข้อผิดพลาดเนื่องจาก val เป็นส่วนตัวโดยค่าเริ่มต้น จึงไม่สามารถเข้าถึงได้โดยตรงโดยใช้ obj
โปรแกรมที่แสดงโครงสร้างในภาษา C++ มีดังต่อไปนี้ -
ตัวอย่าง
#include <iostream> using namespace std; struct Example { int val; }; int main() { Example obj; obj.val = 20; cout<<"Value is: "<<obj.val; return 0; }
ผลลัพธ์
ผลลัพธ์ของโปรแกรมข้างต้นเป็นดังนี้ −
Value is: 20
โปรแกรมข้างต้นทำงานได้อย่างถูกต้องเนื่องจาก val เป็นสาธารณะโดยค่าเริ่มต้น ดังนั้นสามารถเข้าถึงได้โดยตรงโดยใช้ obj
ความแตกต่างอีกประการระหว่างคลาสและโครงสร้างนั้นชัดเจนในระหว่างการสืบทอด เมื่อสืบทอดคลาส ตัวระบุการเข้าถึงของคลาสพื้นฐานจะเป็นแบบส่วนตัวโดยดีฟอลต์ ในการเปรียบเทียบ เมื่อสืบทอดโครงสร้าง ตัวระบุการเข้าถึงของโครงสร้างฐานจะเป็นสาธารณะโดยค่าเริ่มต้น