แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | โครงสร้าง | ชั้น |
---|---|---|
ขั้นพื้นฐาน | หากไม่มีการประกาศตัวระบุการเข้าถึงโดยค่าเริ่มต้นสมาชิกทั้งหมดจะเป็น 'สาธารณะ' | หากไม่มีการประกาศตัวระบุการเข้าถึงตามค่าเริ่มต้นสมาชิกทั้งหมดจะเป็น 'ส่วนตัว' |
การประกาศ | struct structure_name { พิมพ์ struct_element 1; พิมพ์ struct_element 2; ประเภท struct_element 3; . . . }; | คลาส class_name { สมาชิกข้อมูล ฟังก์ชั่นสมาชิก }; |
ตัวอย่าง | ตัวอย่างของ 'โครงสร้าง' เรียกว่า 'โครงสร้างตัวแปร' | อินสแตนซ์ของ 'คลาส' เรียกว่า 'วัตถุ' |
ความหมายของโครงสร้าง
โครงสร้างคือชุดของตัวแปรของชนิดข้อมูลที่แตกต่างกันทั้งหมดที่อ้างอิงโดยชื่อเดียว การประกาศโครงสร้างเป็นแม่แบบที่ใช้สร้างอินสแตนซ์ของโครงสร้าง มีการประกาศโครงสร้างดังนี้
struct sname {type struct_element1; พิมพ์ struct_element2; พิมพ์ struct_element3; . . . } variable1, variable2, . . .;
คำหลัก 'struct' กำหนดให้คอมไพเลอร์ที่มีการประกาศโครงสร้าง 'sname' หมายถึงชื่อที่กำหนดให้กับโครงสร้าง การประกาศโครงสร้างจะถูกยกเลิกโดยเครื่องหมายอัฒภาคเสมอเนื่องจากจะถือว่าเป็นคำสั่ง คุณสามารถประกาศอินสแตนซ์ของโครงสร้างก่อนการยกเลิกดังกล่าวในโค้ดด้านบน (ตัวแปร 1, ตัวแปร 2) หรือคุณสามารถประกาศอินสแตนซ์ของโครงสร้างใน main () โดยการเขียนชื่ออินสแตนซ์ที่นำหน้าด้วยชื่อโครงสร้าง
// ตัวอย่าง main () {sname S1, S2; }
นี่คือ S1 และ S2 เป็นอินสแตนซ์ของโครงสร้าง อินสแตนซ์ของโครงสร้างเรียกว่า "โครงสร้างตัวแปร" องค์ประกอบที่ประกาศภายในส่วนของโครงสร้างสามารถเข้าถึงได้ผ่านตัวแปรโครงสร้างผ่านการใช้ตัวดำเนินการ dot (.)
// ตัวอย่าง S1 struct_element1;
- คุณสามารถสร้างอาร์เรย์ของโครงสร้างได้ด้วยเหตุนี้คุณต้องประกาศโครงสร้างก่อนแล้วจึงประกาศอาร์เรย์ประเภทนั้น
// ตัวอย่าง struct sname sarray [10];
ข้อความข้างต้นสร้างอาร์เรย์ที่มีชื่อ 'sarray' ที่มีสิบตัวแปรและแต่ละตัวแปรถูกจัดระเบียบตามที่กำหนดไว้ใน 'sname'
- คุณสามารถส่งสมาชิกโครงสร้างไปยังฟังก์ชันและคุณสามารถส่งผ่านโครงสร้างทั้งหมดไปยังฟังก์ชัน
- เช่นเดียวกับตัวชี้เลขจำนวนเต็มตัวชี้แถวลำดับตัวชี้โครงสร้างสามารถประกาศได้โดยการวาง '*' ที่ด้านหน้าของชื่อตัวแปรโครงสร้าง
// ตัวอย่าง struct sname * S1;
บันทึก:
องค์ประกอบ 'โครงสร้าง' ถูกเก็บไว้ในตำแหน่งหน่วยความจำต่อเนื่อง
คำจำกัดความของ Class
คลาสใน OOP กำหนดประเภทใหม่ซึ่งมีข้อมูลสมาชิกและฟังก์ชั่นสมาชิกที่ใช้ในการเข้าถึงข้อมูลสมาชิกของชั้นเรียน อินสแตนซ์ของคลาสเรียกว่า "วัตถุ" ซึ่งแต่ละแห่งมีองค์กรเดียวกันกับคลาส คลาสเป็นนามธรรมที่เป็นตรรกะในขณะที่วัตถุมีอยู่จริง คลาสนั้นมีโครงสร้างคล้ายกับโครงสร้าง สามารถประกาศคลาสได้ดังนี้
class class_name {สมาชิกข้อมูลส่วนตัวและฟังก์ชั่นสมาชิก access_specifier ประเภท data_member; พิมพ์ mem_funct (รายการพารามิเตอร์) {. . }} รายการวัตถุ
ในที่นี้คลาสเป็นคีย์เวิร์ดซึ่งประกาศให้คอมไพเลอร์ทราบว่าคลาสนั้นถูกประกาศแล้ว คุณสมบัติหลักของ OOP คือการซ่อนข้อมูลซึ่งทำได้โดยการให้ตัวระบุการเข้าถึงสามตัวคือ "สาธารณะ", "ส่วนตัว", "ป้องกัน" หากคุณไม่ได้ระบุตัวระบุการเข้าถึงใด ๆ ในคลาสในขณะที่ประกาศข้อมูลสมาชิกหรือฟังก์ชั่นสมาชิกโดยค่าเริ่มต้นทั้งหมดจะถือว่าเป็นส่วนตัว ตัวระบุการเข้าถึงสาธารณะอนุญาตให้ฟังก์ชันหรือข้อมูลสามารถเข้าถึงได้โดยส่วนอื่น ๆ ของโปรแกรมของคุณ สมาชิกส่วนตัวของคลาสสามารถเข้าถึงได้โดยสมาชิกของคลาสนั้นเท่านั้น ตัวระบุการเข้าถึงที่มีการป้องกันถูกนำไปใช้ในระหว่างการสืบทอด เมื่อคุณประกาศตัวระบุการเข้าถึงจะไม่สามารถเปลี่ยนแปลงได้ตลอดทั้งโปรแกรม
วัตถุไม่ได้เป็นเพียงตัวอย่างของคลาส สมาชิกของคลาสสามารถเข้าถึงได้โดยวัตถุของคลาสเดียวกันโดยใช้ตัวดำเนินการ dot (.)
//object.mem_funct (อาร์กิวเมนต์);
- วัตถุสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน
- ตัวชี้ไปยังวัตถุยังสามารถสร้างได้
ความแตกต่างที่สำคัญระหว่างโครงสร้างและคลาส
- ความแตกต่างที่สำคัญระหว่างโครงสร้างและคลาสคือโดยค่าเริ่มต้นสมาชิกทั้งหมดของโครงสร้างเป็นสาธารณะในขณะที่ตามค่าเริ่มต้นสมาชิกทั้งหมดของคลาสเป็นส่วนตัว
ความคล้ายคลึงกัน:
- ใน C ++ ทั้งโครงสร้างและคลาสจะเทียบเท่ากันทางไวยากรณ์
- ทั้งโครงสร้างและคลาสสามารถประกาศสมาชิกบางส่วนได้
- ชื่อของโครงสร้างหรือคลาสสามารถใช้เป็นชนิดสแตนด์อะโลน
- ทั้งโครงสร้างและคลาสสนับสนุนกลไกการสืบทอด
สรุป:
โครงสร้างใน C มีข้อ จำกัด บางประการเนื่องจากโครงสร้างไม่อนุญาตให้ซ่อนข้อมูลประเภทข้อมูล 'struct' ไม่สามารถใช้งานได้เหมือนในตัวชนิดโครงสร้างไม่รองรับการสืบทอด โครงสร้างใน C ++ เอาชนะข้อ จำกัด เหล่านี้ ใน C ++ คลาสเป็นเวอร์ชันที่ขยายของโครงสร้าง โปรแกรมเมอร์พบว่าการใช้คลาสเพื่อเก็บข้อมูลและฟังก์ชั่นทั้งสองและโครงสร้างเพียงเพื่อเก็บข้อมูล