PDA

نسخه کامل مشاهده نسخه کامل : سوال راجع به کلاس



Tom Clancy's
15-01-2013, 20:24
سلام دوستان
من تو بخش تعریف یک سری از کلاسها میبینم که واژه class رو قبل از تعریف یه متعییر یا تابع نوشته !
میخواستم بدونم کاربردش چی هست؟

مثل

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

p d
17-01-2013, 11:56
انگار تعریفتون ناقص ه !
CControls کلاس ه الان ؟ *m_pControls تابع/متد یا کلاس ه ؟ میشه کد این قسمت و کامل و بذارید شاید فرجی شه.

god of war 2
17-01-2013, 12:36
کدتون همونطور که دوستان گفتند ناقصه و یا حداقل خیلی درست نیست.
اما حدسی که من میزنم اینه که این کد یک forward declaration هست و کاربرد های زیادی داره. و نکته ایی که وجود داره اینه که شما نمیتونید بدون اشارگر از forward declaration استفاده کنید.
یعنی اگر این کدو به این شکل تغییر بدید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دیگر قابل کامپایل نیست.
forward declaration ها همگی در زمان اجرا تخصیص حافظه میشوند و کامپایلر هیچ اطلاعای از فضای مورد نیاز آنها در زمان کامپایل ندارد به همین دلیل باید بصورت اشارگر تعریف شوند تا بتوانند بصورت داینامیک فضا گرفته و از طرفی هم در هنگام کامپایل به مشکل نخورند.
بیشترین کاربرد forward declaration ها در ساختار های PImple Idiom هست. یعنی زمانی که کامپایلر هیچ اطلاعی از" پیاده سازی" کلاس شما ندارد و" پیاده سازی" از "اینترفیس" مخفی شده است و توسط یک forward declaration به "پیاده سازی" دسترسی پیدا میکند.