แนะนำ, 2021

ตัวเลือกของบรรณาธิการ

ความแตกต่างระหว่างโครงสร้างและคลาส

ทั้งโครงสร้างและคลาสให้วิธีการสร้างชนิดข้อมูลแบบกำหนดเองซึ่งสามารถใช้เพิ่มเติมเพื่อสร้างอินสแตนซ์ C ++ ขยายบทบาทของโครงสร้างเพื่อสร้างคลาส ทั้งโครงสร้างและคลาสมีความคล้ายคลึงกันทุกประการยกเว้นความแตกต่างเพียงอย่างเดียวโครงสร้างโดยค่าเริ่มต้นมีสมาชิกทั้งหมดเป็น "สาธารณะ" และคลาสโดยค่าเริ่มต้นมีสมาชิกทั้งหมด "ส่วนตัว" ลองศึกษาความแตกต่างระหว่างโครงสร้างและคลาสโดยใช้แผนภูมิเปรียบเทียบ

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบโครงสร้างชั้น
ขั้นพื้นฐานหากไม่มีการประกาศตัวระบุการเข้าถึงโดยค่าเริ่มต้นสมาชิกทั้งหมดจะเป็น 'สาธารณะ'หากไม่มีการประกาศตัวระบุการเข้าถึงตามค่าเริ่มต้นสมาชิกทั้งหมดจะเป็น 'ส่วนตัว'
การประกาศ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 (อาร์กิวเมนต์); 
  • วัตถุสามารถส่งผ่านเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน
  • ตัวชี้ไปยังวัตถุยังสามารถสร้างได้

ความแตกต่างที่สำคัญระหว่างโครงสร้างและคลาส

  1. ความแตกต่างที่สำคัญระหว่างโครงสร้างและคลาสคือโดยค่าเริ่มต้นสมาชิกทั้งหมดของโครงสร้างเป็นสาธารณะในขณะที่ตามค่าเริ่มต้นสมาชิกทั้งหมดของคลาสเป็นส่วนตัว

ความคล้ายคลึงกัน:

  • ใน C ++ ทั้งโครงสร้างและคลาสจะเทียบเท่ากันทางไวยากรณ์
  • ทั้งโครงสร้างและคลาสสามารถประกาศสมาชิกบางส่วนได้
  • ชื่อของโครงสร้างหรือคลาสสามารถใช้เป็นชนิดสแตนด์อะโลน
  • ทั้งโครงสร้างและคลาสสนับสนุนกลไกการสืบทอด

สรุป:

โครงสร้างใน C มีข้อ จำกัด บางประการเนื่องจากโครงสร้างไม่อนุญาตให้ซ่อนข้อมูลประเภทข้อมูล 'struct' ไม่สามารถใช้งานได้เหมือนในตัวชนิดโครงสร้างไม่รองรับการสืบทอด โครงสร้างใน C ++ เอาชนะข้อ จำกัด เหล่านี้ ใน C ++ คลาสเป็นเวอร์ชันที่ขยายของโครงสร้าง โปรแกรมเมอร์พบว่าการใช้คลาสเพื่อเก็บข้อมูลและฟังก์ชั่นทั้งสองและโครงสร้างเพียงเพื่อเก็บข้อมูล

Top