วีดีโอ: ฉันจะจำกัดการจัดสรรแบบไดนามิกของวัตถุใน C ++ ได้อย่างไร
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
กองตาม วัตถุ ได้รับการจัดการโดยปริยายโดย C++ คอมไพเลอร์ พวกเขาจะถูกทำลายเมื่อพวกเขาออกไปนอกขอบเขตและ วัตถุที่จัดสรรแบบไดนามิก ต้องได้รับการปล่อยด้วยตนเองโดยใช้ตัวดำเนินการลบมิฉะนั้น หน่วยความจำ การรั่วไหลเกิดขึ้น C++ ไม่รองรับวิธีการรวบรวมขยะอัตโนมัติที่ใช้โดยภาษาต่างๆ เช่น Java & C#
เมื่อพิจารณาถึงสิ่งนี้ ฉันจะจำกัดการจัดสรรแบบไดนามิกของวัตถุใน C ++ ได้อย่างไร
กองตาม วัตถุ ได้รับการจัดการโดยปริยายโดย C++ คอมไพเลอร์ พวกเขาจะถูกทำลายเมื่อพวกเขาออกไปนอกขอบเขตและ วัตถุที่จัดสรรแบบไดนามิก ต้องได้รับการปล่อยด้วยตนเองโดยใช้ตัวดำเนินการลบมิฉะนั้น หน่วยความจำ การรั่วไหลเกิดขึ้น C++ ไม่รองรับวิธีการรวบรวมขยะอัตโนมัติที่ใช้โดยภาษาต่างๆ เช่น Java & C#
นอกจากนี้ เราสามารถจัดสรรหน่วยความจำสำหรับวัตถุแบบไดนามิกใน CPP ได้หรือไม่ การจัดสรรหน่วยความจำแบบไดนามิก สำหรับ วัตถุที่เราทำได้ อีกด้วย จัดสรรวัตถุแบบไดนามิก . เนื่องจาก เรา รู้ว่า Constructor เป็นฟังก์ชันสมาชิกของคลาสซึ่งถูกเรียกเมื่อ new วัตถุ ถูกสร้างขึ้นจากคลาสนั้น Destructor ยังเป็นฟังก์ชันสมาชิกของคลาสซึ่งถูกเรียกเมื่อใดก็ตามที่ วัตถุ ไปนอกขอบเขต
ผู้คนยังถามคุณว่าคุณจะสร้างคลาส C ++ ที่มีวัตถุที่สามารถจัดสรรแบบไดนามิกได้อย่างไร?
- ไม่สามารถทำได้ สิ่งเดียวที่คุณทำได้คือทำให้คอนสตรัคเตอร์เป็นแบบส่วนตัว และมีโรงงานแบบสแตติกที่สร้างอินสแตนซ์ใหม่ของคลาส –
- การสร้างคลาสดังกล่าวเป็นปัญหาอย่างแน่นอน
- นั่นเป็นข้อกำหนดที่แปลกมาก
เหตุใดเราจึงต้องเริ่มต้นวัตถุแบบไดนามิก
NS การเริ่มต้นแบบไดนามิกของวัตถุ แปลว่า เริ่มต้น สมาชิกของคลาสข้อมูลในขณะที่สร้าง วัตถุ . เมื่อไหร่ พวกเราต้องการ เพื่อให้ค่าเริ่มต้นหรือค่าเริ่มต้นแก่สมาชิกข้อมูลในขณะที่สร้าง วัตถุ - พวกเราต้องการ ใช้ การเริ่มต้นแบบไดนามิกของวัตถุ.