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

สารบัญ:

Anonim

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

ใน.NET โดยทั่วไปจะมีประเภทอยู่สองประเภท คลาสที่เป็นประเภทอ้างอิง และ struct เป็นประเภทค่า ประเภทการอ้างอิงส่วนใหญ่อาศัยอยู่บนฮีป ในขณะที่ประเภทค่าอยู่ในแนวเดียวกัน บทความนี้สามารถเคลียร์ข้อแตกต่างอื่นๆ ได้หลายอย่าง

คลาส vs โครงสร้าง

ความแตกต่างหลัก ระหว่างคลาสและ struct คือคลาสนั้นเป็นประเภทอ้างอิงซึ่งถูกจัดสรรบนฮีปรวมถึงการรวบรวมขยะ ในอีกทางหนึ่ง โครงสร้างเป็นประเภทค่าที่จัดสรรในอินไลน์หรือสแต็กในประเภทที่มี

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

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

ตารางเปรียบเทียบระหว่างคลาสและโครงสร้าง

พารามิเตอร์ของการเปรียบเทียบ ระดับ โครงสร้าง
การมองเห็นเริ่มต้น ส่วนตัว สาธารณะ
ขนาดเมื่อว่าง 1 ไบต์ 0 ไบต์
การเริ่มต้นตัวแปรสมาชิก อนุญาต ไม่อนุญาต
เก็บขยะ เป็นไปได้เพราะใช้ pass by reference เป็นไปไม่ได้เพราะใช้ค่าผ่าน
การนำกลับมาใช้ใหม่ อย่างสมบูรณ์ ไม่

คลาสคืออะไร?

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

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

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

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

โครงสร้างคืออะไร?

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

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

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

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

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

บทสรุป

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

เมื่อพูดถึงการมองเห็น การมองเห็นเริ่มต้นจะเป็นแบบส่วนตัวในชั้นเรียน ในขณะที่เป็นแบบสาธารณะในโครงสร้าง การรวบรวมขยะสามารถทำได้ในชั้นเรียนเพราะใช้การอ้างอิงแบบผ่านๆ ในทางกลับกัน ใน struct การรวบรวมขยะเป็นไปไม่ได้เพราะใช้ค่าที่ผ่าน ขนาดของคลาสคือ 1 ไบต์เมื่อว่าง ขณะที่ถูกโจมตี จะเป็น 0 ไบต์

อ้างอิง

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