مخرب ها (Destructors)

مخرب ها نقطه مقابل سازنده ها هستند. مخرب ها متدهای خاصی هستند که هنگام تخریب یک شی فراخوانی می شوند. اشیا از حافظه کامپیوتر استفاده می کنند و اگر پاک نشوند ممکن است با کمبود حافظه مواجه شوید. می توان از مخرب ها برای پاک کردن منابعی که در برنامه مورد استفاده قرار نمی گیرند استفاده کرد. با استفاده از مخرب ها ،کدی را تعریف می کنید که وقتی اجرا می شود که یک شی تخریب شده باشد. معمولا شی وقتی تخریب می شود که از محدوده خارج شود. دستور نوشتن مخرب کمی با سازنده متفاوت است :

~ClassName()
{
   code to execute;
}

مانند سازنده ها، مخرب ها باید همنام کلاسی باشند که در آن تعریف شده اند. به این نکته توجه کنید که قبل از نام مخرب علامت (~) را درج کنید. برنامه زیر نحوه فراخوانی سازنده و مخرب را نشان می دهد :

   1: #include <iostream>
   2: #include <string>
   3: using namespace std;
   4: 
   5: class Person
   6: {
   7:     public:
   8:         Person()
   9:         {                                                
  10:             cout << "Constructor was called." << endl;
  11:         }
  12: 
  13:         ~Person()                                    
  14:         {                                            
  15:             cout << "Destructor was called." << endl;
  16:         }                                            
  17: };
  18: 
  19: int main()
  20: {
  21:     Person p1;
  22: }
Constructor was called.
Destructor was called.

در کلاس Person یک سازنده و یک مخرب تعریف شده است. سپس در داخل متد ()main یک نمونه از کلاس ایجاد کرده ایم. وقتی یک نمونه از کلاس ایجاد می کنیم سازنده فراخوانی شده و پیغام مناسب نمایش داده می شود. وقتی از متد ()main خارج می شویم نمونه ایجاد شده نابود و مخرب فراخوانی می شود.