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

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 4 พฤษภาคม 2024
Anonim
ความแตกต่างระหว่าง Structure กับ Class ภาษา C#
วิดีโอ: ความแตกต่างระหว่าง Structure กับ Class ภาษา C#

เนื้อหา


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

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ความคล้ายคลึงกัน
  5. ข้อสรุป

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

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

ข้อความข้างต้นสร้างอาร์เรย์ที่มีชื่อ "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 ++ คลาสเป็นเวอร์ชันขยายของโครงสร้าง โปรแกรมเมอร์พบว่าการใช้คลาสเพื่อเก็บข้อมูลและฟังก์ชั่นทั้งสองและโครงสร้างเพียงเพื่อเก็บข้อมูล