سلام دوستان
من تو بخش تعریف یک سری از کلاسها میبینم که واژه class رو قبل از تعریف یه متعییر یا تابع نوشته !
میخواستم بدونم کاربردش چی هست؟
مثل
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام دوستان
من تو بخش تعریف یک سری از کلاسها میبینم که واژه class رو قبل از تعریف یه متعییر یا تابع نوشته !
میخواستم بدونم کاربردش چی هست؟
مثل
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
انگار تعریفتون ناقص ه !
CControls کلاس ه الان ؟ *m_pControls تابع/متد یا کلاس ه ؟ میشه کد این قسمت و کامل و بذارید شاید فرجی شه.
کدتون همونطور که دوستان گفتند ناقصه و یا حداقل خیلی درست نیست.
اما حدسی که من میزنم اینه که این کد یک forward declaration هست و کاربرد های زیادی داره. و نکته ایی که وجود داره اینه که شما نمیتونید بدون اشارگر از forward declaration استفاده کنید.
یعنی اگر این کدو به این شکل تغییر بدید:
دیگر قابل کامپایل نیست.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
forward declaration ها همگی در زمان اجرا تخصیص حافظه میشوند و کامپایلر هیچ اطلاعای از فضای مورد نیاز آنها در زمان کامپایل ندارد به همین دلیل باید بصورت اشارگر تعریف شوند تا بتوانند بصورت داینامیک فضا گرفته و از طرفی هم در هنگام کامپایل به مشکل نخورند.
بیشترین کاربرد forward declaration ها در ساختار های PImple Idiom هست. یعنی زمانی که کامپایلر هیچ اطلاعی از" پیاده سازی" کلاس شما ندارد و" پیاده سازی" از "اینترفیس" مخفی شده است و توسط یک forward declaration به "پیاده سازی" دسترسی پیدا میکند.
Last edited by god of war 2; 17-01-2013 at 12:40.
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)