เราจะมาดูกันว่าฟังก์ชั่น 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()