PDA

View Full Version : تابع مخرب



rahimzade
سه شنبه 05 اردیبهشت 1396, 01:05 صبح
سلام دوستان ببخشید اگه سوالم مبتدی ه
فرض کنید ما یک کلاس داریم و براش تابع مخرب رو مثل کد پایین می نویسیم


class A
{
int *f;
public:
A(){f=new int;}
~A()
{delete f;}
};


حالا این تابع مخرب رو باید توی main فراخوانی کنیم؟
تو نت خیلی سرچ کردم نوشته بودن وقتی قرار باشه یه شی حذف بشه فراواخنی میشه اما از کجا بدونیم باید یه شی رو از بین ببریم بعد اونوقت تابع مخرب فراخوانی بشه

تست که کردم وقتی از یک کلاس دو تا شی بسازی وقتی شی دوم رو تعریف می کنه تابع مخرب اجرا میشه یا وقتی برنامه تموم بشه

علی بهمنی جلالی
سه شنبه 05 اردیبهشت 1396, 17:22 عصر
سلام
به نظر من یکی از زمان‌هایی که نابودکنندهٔ شیٔ فراخوانی می‌شه، زمانی هستش که شیٔ به پایان بلاکی که شیٔ در آن تعریف شده می‌رسه. مثلاً برنامهٔ زیر رو در نظر بگیرید:

#include <iostream>
#include "MyClass.h"


using namespace std;


int main()
{
int x = 1;

if (x == 1)
{
MyClass myObject;
} // نابودکنندهٔ myObject در اینجا فراخوانی می‌شود.

}


تابع نابودکنندهٔ شیٔ myObject در خط ۱۵ اجرا می‌شود.