PDA

View Full Version : چه موقع از * استفاده کنیم؟



ayub_coder
چهارشنبه 13 بهمن 1389, 10:38 صبح
سلام دوستان
دیدم تو بعضی از کد نویسی های QT هنگام تعریف اشیا از روی کلاسها از * استفاده شده به این صورت




QTime *mytime;



ولی بعضی جاها هم بدون اصتفاده از اشاره گر این اشیا ساخته می شه



QMenu mymenu;




میشه اساتید توضیح بدن که کی باید از اشاره گر استفاده کنیم و کجا استفاده نکنیم؟ http://debian-ir.com/community/Smileys/default/cd.gifچه مزیتی داره؟ آیا یه تکنیکه یا اصلش به همین صورته؟
ممنون

.:saeed:.
پنج شنبه 14 بهمن 1389, 11:45 صبح
دوست عزیزم این بیشتر مربوط به سی پلاس پلاس هست تا کیوتی . اما وقتی شما شی یی رو با new ایجاد میکنید ، وظیفه مدیریت حافظه اون یعنی حذف به موقع اون وظیفه شما است که با delete اونو حذف کنید . یه نکته بسیار مهم این هست که فرض کنید شما در یک تابع عضو کلاس خودتون یک QWidget خالی ایجاد میکنید (QWidget یه فرم و در واقع یه پنجره خالی هستش ) و اونو با تابع show نمایش میدین . فرض کنید دفعه اول بدون new و دفعه دوم با new این کارو انجام بدین . چون طول عمر یک متغیر در یک تابع تا زمانی است که اون تابع به پایان نرسیده باشد در حالت اول با پایان یافتن تابع QWidget ایجاد شده هم ازبین میره و پنجره نمایش داده شده دیگر نمایش داده نمیشه و لی در حالت دوم چون حذف QWidget با شما ست QWidget ازبین نمیره و خوب مسلما مخفی هم نمیشه. پس اگه شما توی مثلا سازنده یه QTimer ساختن مسلمه که باید با new گرفته بشه تا کاری که بهش سپردین رو درست انجام بده.
نکته ای که هست در کیوتی بعضی اوقات میشه حذف به موقع یه شی رو به کیوتی سپرد اونم وقتی است که شی شما یکی از اجدادش ! کلاس QObject باشه و شما برای شی ای که با new ایجادش کردین بابا تعیین کنید ! بله وقتی شما برای شی ایجاد شده Parent تعیین کنید ، زمانی که پدر از بین بره فرزنداش هم از بین میره.

ayub_coder
پنج شنبه 14 بهمن 1389, 14:02 عصر
پس تفاوتی نداره که اشاره گر باشه یا نه دیگه درسته؟ بستگی به خودمون داره که چجوری استفاده کنیم؟

.:saeed:.
پنج شنبه 14 بهمن 1389, 14:48 عصر
بله هیچ تفاوتی نداره فقط باید هر کدوم درست و به موقع استفاده بشند.