تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 10 از 10

نام تاپيک: کاربرد virtual در ++c

  1. #1
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    پيش فرض کاربرد virtual در ++c

    با سلام
    می خواستم بدونم وقتی تو ++c کلاس مشتق شده ای از کلاس اصلی را ازنوع virtual تعریف کنیم این چه معنی داره؟
    اگه توضیح کلی در مورد استفاده از virtualدر تعریف توابع و کلاس ها بدین ممنون می شم.

  2. #2
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    پيش فرض

    باسلام اگه می شه بگین دقیقا( extern "C" __declspec(dllexport به چه منظوری به کار می ره؟

  3. #3
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض

    باسلام اگه می شه بگین دقیقا( extern "C" __declspec(dllexport به چه منظوری به کار می ره؟
    از این دستور برای ساختن dll استفاده می شود. این دستور این مطلب را می گوید که از بیرون dll فقط این توابع دیده می شوند.
    به مثال زیر توجه کنید:

    فایل سرآمد dlltest.h
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فایل سورس dlltest.cpp
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    اگر این دو فایل را در MS VC++ به یک پروژه از نوع Win32 Dynamic-Link Library اضافه کنی بعد از کامپایل dll به شما داده می شود.

    برای دیدن کاربردهای dllimport و dllexport به سایت مایکروسافت سری بزنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    برای دیدن نحوِۀ ساختن dll به لینک زیر مراجعه کنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
    Last edited by hamidreza_buddy; 26-03-2007 at 12:40.

  4. #4
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض توابع مجازی در C++

    توابع مجازی در C++:
    زمانی یک تابع را به صورت مجازی تعریف می کنیم که نیاز باشد که برای هر کلاس مشتق شده کد متفاوتی اجرا شود. معمولاً برای چندریختی (Polymorphism) کاربرد دارد.
    مثال: چند نژاد از سگ ها را در نظر بگیرید. همۀ آن ها نوعی سگند. همۀ آن ها نیز به شکل خاصی پارس می کنند. برای پیاده سازی همچین چیزی ابتدا یک کلاس Dog می سازیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و سپس بقیۀ نژاد سگ ها را از کلاس Dog مشتق می کنیم:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    حال اگر آدرس هر کدام از سگ ها را به اشاره گری از نوع Dog انتساب دهیم و تابع bark() آن را اجرا کنیم ، تابع مربوط به هر کدام از سگ ها اجرا خواهد شد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    خروجی به صورت زیر خواهد بود(البته کد بالا را تو NodePad نوشتم و کامپایل نکرده ام):
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    Last edited by hamidreza_buddy; 26-03-2007 at 13:14.

  5. این کاربر از hamidreza_buddy بخاطر این مطلب مفید تشکر کرده است


  6. #5
    آخر فروم باز hamidreza_buddy's Avatar
    تاريخ عضويت
    Sep 2004
    محل سكونت
    شریف
    پست ها
    1,167

    پيش فرض کلاس های مجازی در C++

    کلاس های مجازی در C++

    از این کلاس ها زمانی استفاده می شود که بخواهیم از دو کلاس که از یک کلاس مشترک مشتق شده اند ، کلاسی مشتق کنیم.
    مثال:
    فرض کنید که کلاس های B1 و B2 از کلاس L مشتق شده اند. می خواهیم کلاسی به نام D از B1 و B2 مشتق کنیم. اگر از virtual استفاده نکنیم، کلاس پایۀ L دو بار به ارث می رسد. برای جلوگیری از این موضوع باید از کلمۀ کلیدی virtual استفاده کرد:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که نتیجه به صورت زیر خواهد بود:


    البته در موارد نیاز است که مثلاً دو نمونه از کلاس پایه (کلاس V) در کلاس مشتق شده (کلاس X) باشد.
    به مثال زیر دقت کنید:
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    که نتیجه به صورت زیر خواهد بود:
    Last edited by hamidreza_buddy; 26-03-2007 at 13:29.

  7. #6
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    سلام.
    اول یه تشکر خیلی خاص از "hamidreza_buddy" به خاطر پاسخ عالیشون.
    فقط خواستم موردی رو اضافه کنم. وقتی که از ماکروی extern C استفاده میکنین این اجازه رو به Module های
    ایجاد شده در ++C میدین(مثل DLL ها) که بتونن در سایر زبانها هم استفاده بشن.دلیش به خاطر تفاوتی هست
    که زبان های C و ++C در قراردادنامگذاری symbol ها دارن. (گرچه واژه syntax به جای ماکرو بهتره)
    این رو به این دلیل گفتم که اگه از DLL تون قراره در برنامه های ++C استفاده کنین نیازی به استفاده از این
    syntax نیست و تنها همون declspec __ کافیه.
    علاوه بر لینکی که hamidreza دادن نگاهی هم به لینک زیر بکنید:
    [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]

  8. #7
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    4 تشکر

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

  9. #8
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    13

    در مورد استفاده از dll هم در جواب someoneباید بگم که من از mfc dll برای ساختن object arx مورد استفاده در اتوکد استفاده می کنم .اونجوری هم که تو help مربوط به arx دیدم این عبارت به صورت کامل به کار رفته بود

  10. #9
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    در مورد استفاده از dll هم در جوابsomeone باید بگم که من از mfc dll برای ساختن object arx مورد استفاده در اتوکد استفاده می کنم .اونجوری هم که تو help مربوط به arx دیدم این عبارت به صورت کامل به کار رفته بود.

    دوباره سلام.
    اگه از DLL تون قراره در برنامه های ++C استفاده کنین نیازی به استفاده از این syntax نیست.
    شاید جمله رو با دقت نخوندین. ببینید وقتی شما میخواین Dll ی بنویسین که در سایر زبانها ازش استفاده بشه
    مثلا VB باید Dll تون استاندارد باشه و از توابع استاندارد C باید استفاده بشه. extren C اینکار رو براتون انجام
    میده. فرض کنین با VC یک Dll از نوع Win32 ایجاد میکنین و میخواین دوباره از اون در یک پروژه ی Win32App
    استفاده کنین. نیازی نیست از extren C استفاده بشه. ولی میتونه باشه. دقیقا مثل DEF فایل برای export
    یک تابع از DLL. وقتی از dllexport استفاده میشه لازم نیست فایل DEF رو به برنامه اضافه کنین. ولی میتونین
    این فایل رو در DLL داشته باشین.
    در مورد ObjectARX به این دلیل میتونین از MFC Dll استفاده کنین چون از کلاسهای MFC پشتیبانی میکنه.
    یک محدویت بزرگ استفاده از MFC Dll همینه. تنها در زبان هایی میشه ازش استفاده کرد که از MFC پشتیبانی
    بشه. شما توضیحی ندادین ولی برای ایجاد یه DLL برای ObjectARX نوعش رو MFC extension DLL انتخاب
    میکنین.درسته؟ این به این معنی هست که شما از کلاسهای MFC در برنامه استفاده میکنین. که به نظر من
    نیازی به استفاده از decspec__ نیست. دلیلش هم اینه که براحتی میتونید کلاس مورد نظر رو export کنین.
    با استفاده از ماکروی AFX_EXT_CLASS. یعنی کافی برای تابع مورد نظرتون یه کلاس بنویسن.
    در مورد DLL ها و نوع هایی که میتونین با استفاده از VC ایجاد کنین بحث خیلی مفصله.
    راستی! از کدوم SDK برای توسعه ی برنامتون استفاده میکنین؟

  11. #10
    اگه نباشه جاش خالی می مونه sara_she's Avatar
    تاريخ عضويت
    Feb 2007
    محل سكونت
    اهواز
    پست ها
    214

    پيش فرض

    ممنون از توجه تون . ببينيد من قراره يك سري امكانات به اتوكد اضافه كنم يه چيزي شبيه plugin و اين كار توسط objectarx sdk انجام مي شه كه از زبان برنامه نويسي vs c++.net پشتيباني مي كنه. اگه مي شه در مورد ماكروي AFX_EXT_CLASS. و نح.ه استفاده از اون مثالي مطرح كنيد تا متوجه بشم آخه من تا حالا به vs c++.netكار نكردم

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •