เราจะมาดูกันว่าฟังก์ชั่น destructor และ free() แตกต่างกันอย่างไรใน C++ Destructor ใช้เพื่อดำเนินการบางอย่าง ก่อนที่วัตถุจะถูกทำลาย การดำเนินการนี้อาจไม่ทำให้หน่วยความจำว่าง แต่สามารถดำเนินการง่ายๆ บางอย่างได้ เช่น การแสดงข้อความหนึ่งข้อความบนหน้าจอ
ฟังก์ชัน free() ใช้ใน C ใน C ++ เราสามารถทำสิ่งเดียวกันโดยใช้คีย์เวิร์ด delete ได้เช่นกัน เมื่อวัตถุถูกลบโดยใช้ free() หรือ delete ตัวทำลายจะถูกเรียกใช้ ฟังก์ชัน destructor ไม่มีอาร์กิวเมนต์และไม่ส่งคืนอะไรเลย ฟังก์ชันนี้ถูกเรียกเมื่อมีการใช้งานว่างหรือลบ หรือวัตถุอยู่นอกขอบเขต
ตัวอย่าง
#include<iostream> #include<cstdlib> using namespace std; class MyClass { public: ~MyClass() { cout << "Destructor of MyClass" << endl; } }; int main() { MyClass *obj; obj = new MyClass(); delete obj; }
ผลลัพธ์
Destructor of MyClass
บางครั้งฟังก์ชัน free() อาจไม่เรียก destructor แต่ลบเนื้อหาออกจากหน่วยความจำ ที่นี่เราใช้คีย์เวิร์ด delete แทนที่ free()