Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

อะไรคือความแตกต่างระหว่าง destructor และฟังก์ชั่นฟรีใน C ++?


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