close
تبلیغات در اینترنت
اشاره گر
مرورگرهای پیشنهادی :
موضوعات
  • پایان نامه و مقاله فنی مهندسی
  • مهندسی برق ، الکترونیک ، مخابرات
  • مهندسی فناوری اطلاعات
  • مهندسی کامپیوتر
  • مهندسی مکانیک
  • مهندسی عمران
  • مهندسی معماری
  • مهندسی ساخت و تولید
  • مهندسی منابع طبیعی
  • مهندسی کشاورزی
  • مهندسی شیلات
  • مهندسی صنایع
  • مهندسی مواد
  • مهندسی نقشه برداری
  • مهندسی تاسیسات
  • مهندسی شیمی
  • مهندسی متالوژی
  • مهندسی نساجی
  • مهندسی معدن
  • مهندسی نفت
  • محیط زیست
  • جوشکاری
  • پایان نامه و مقاله علوم انسانی
  • حقوق
  • اقتصاد
  • مدیریت
  • جغرافیا
  • جهانگردی
  • حسابداری
  • تربیت بدنی
  • ادبیات فارسی
  • علوم سیاسی
  • علوم اجتماعی
  • مدیریت صنعتی
  • مدیریت روابط عمومی
  • احکام و معارف اسلامی
  • روانشناسی و علوم تربیتی
  • گرافیک
  • هنر
  • بیمه
  • تاریخ
  • موسیقی
  • صنایع دستی
  • پایان نامه و مقاله پزشکی
  • علوم آزمایشگاهی
  • بهداشت عمومی
  • طب هسته ای
  • چشم پزشکی
  • جنین شناسی
  • روان پزشکی
  • دندانپزشکی
  • پیراپزشکی
  • دامپزشکی
  • طب سنتی
  • داروسازی
  • پرستاری
  • پزشکی
  • مامایی
  • آناتومی
  • ژنتیک
  • پایان نامه و مقاله علوم پایه
  • زیست شناسی
  • زمین شناسی
  • دندانپزشکی
  • دامپزشکی
  • پزشکی
  • فیزیک
  • پاورپوینت و اسلاید فنی مهندسی
  • پاورپوینت معماری
  • پاورپوینت کامپیوتر و IT
  • نمونه سوالات استخدامی
  • نمونه سوالات استخدامی بانک
  • نمونه سوالات استخدامی آموزش و پرورش
  • نمونه سوالات استخدامی شهرداری
  • نمونه سوالات استخدامی تامین اجتماعی
  • نمونه سوالات استخدامی دستگاه اجرایی
  • نمونه سوالات استخدامی فنی و حرفه ای
  • نمونه سوالات استخدامی وزارت خانه ها
  • نمونه سوالات استخدامی نظامی
  • سایر نمونه سوالات استخدامی
  • جزوات دانشگاهی
  • جزوات دروس مشترک دانشگاهی
  • جزوات مهندسی برق
  • جزوات مهندسی مکانیک
  • جزوات مهندسی عمران
  • جزوات رشته حسابداری
  • جزوات مهندسی فیزیک
  • جزوات مهندسی معماری
  • جزوات مهندسی ریاضی
  • جزوات مهندسی صنایع
  • جزوات مهندسی شیمی
  • جزوات مهندسی کامپیوتر و IT
  • جزوات رشته زمین شناسی
  • جزوات رشته روانشناسی
  • جزوات مهندسی مخابرات
  • جزوات رشته مدیریت
  • جزوات تربیت بدنی
  • جزوات حقوق
  • گزارش کارآموزی فنی مهندسی
  • مهندسی کامپیوتر (سخت افزار - نرم افزار)
  • مهندسی مکانیک
  • مهندسی برق
  • مهندسی شیمی
  • مهندسی فناوری اطلاعات
  • صنایع غذایی
  • حسابداری
  • مدیریت
  • مطالب پربازدید
    مطالب تصادفی
    مطالب پیشین
  • بررسی رابطه تيپ های شخصيتی دبيران دبيرستانهای دخترانه با میزان موفقیت (پنجشنبه 13 اردیبهشت 1397)
  • بررسی پيش تجربی سياهه مشاوره ای لوئيس سوال هاي شماره 3 تا 45 (از مقياس اطمينان اجتماعی) (پنجشنبه 13 اردیبهشت 1397)
  • بررسی مقدماتی شخصيتی كرنل براي سوال 36 و 37 بر روي دانشجويان دانشگاه آزاد اسلامي (پنجشنبه 13 اردیبهشت 1397)
  • مقايسه مشكلات زبان عادی ويژه (چهارشنبه 12 اردیبهشت 1397)
  • مقایسه ویژگی های شخصیتی شخصیت ضد اجتماعی و انحرافات اجتماعی در بین دانشجویان دختر و پسر (جمعه 07 اردیبهشت 1397)
  • بررسی رابطة تك فرزندی با اختلالات رفتاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی توصيفی موسيقی و موسيقی درمانی بر روی انسان ها (چهارشنبه 05 اردیبهشت 1397)
  • بررسی تأثير ناكامی در ميزان پرخاشگری بين دانش آموزان دختر و پسر مقطع ابتدايی (چهارشنبه 05 اردیبهشت 1397)
  • بررسی ميزان تأثير اردوهای تربيتی ـ آموزشی بر رشد شخصيت دانش آموزان (چهارشنبه 05 اردیبهشت 1397)
  • نياز سنجی كاركنان اطلاعات (چهارشنبه 05 اردیبهشت 1397)
  • مقايسه هوش هيجانی و جرأت ورزی در دانش‌آموزان دختر و پسر نابينا و عادی (چهارشنبه 05 اردیبهشت 1397)
  • مقایسه میزان هیجان خواهی دانشجویان متأهل و مجرد (چهارشنبه 05 اردیبهشت 1397)
  • مددکاری (چهارشنبه 05 اردیبهشت 1397)
  • بررسی علل گرايش جوانان و نوجوانان به قرص های روان گردان (چهارشنبه 05 اردیبهشت 1397)
  • شناسايی نيازهای آموزشی و ترويجی توتون کاران (چهارشنبه 05 اردیبهشت 1397)
  • چندريختی در C++ توسط توابع مجازی پياده سازی می شود. تابع مجازی تابع عضوی است که انتظار می رود در کلاس های مشتق شده دوباره تعريف شود. درک چندريختی بدون استفاده از توارث و انتزاع غيرممکن است.

    تابع مجازی
    اشاره گر به نوع پايه و مشتق شده
    کلاس های مجرد و توابع مجازی محض
    سازنده ها و مخرب ها درچندريختی


    چندريختی (polymorphism) يکی از ويژگی های زبان های شیءگراست. به واسطه چندريختی توابع می توانند به شيوه های مختلف پياده سازی شوند ولی از طريق يک اسم يکسان در دسترس قرار بگيرند.

    چندريختی در ++C به دو شکل پشتيبانی می شود؛ در زمان کامپايل و در زمان اجرا. سربارگذاری توابع و عملگرها نمونه هائی از چندريختی در زمان کامپايل هستند. چندريختی در زمان اجرا با تلفيق وراثت و توابع مجازی حاصل می شود.

    بازدید : 1069 تاریخ : نویسنده : بهرام محمدپور | نظرات ()

    محاسبات روی اشاره گر

    عملیات جمع، تفریق، افزایش و کاهش را می توان روی متغيرهای اشاره گر انجام داد. چون اشاره گر آدرسی در حافظه است وقتی محاسباتی روی آن انجام می گیرد رفتار متفاوتی نشان می دهد. وقتی عمل جمع عددی با متغير اشاره گر صورت می گيرد اشاره گر به اندازه حاصلضرب عدد در تعداد بایت های نوع داده ای که اشاره می کند جلو می رود. همين برای عمل تفريق هم صدق می کند. اگر مقداری از متغير اشاره گر کم شود در محاسبات تعداد بايت های نوع داده محسوب می شود.

    عملگر افزایش (++) مقدار متغیر را یکی اضافه می کند در حالیکه متغير اشاره گر را به تعداد بایت های نوع داده آن حرکت می دهد. اگر یک اشاره گر به عدد float دارید چون نوع float چهار بایت دارد با افزایش اشاره گر 4 واحد به آن اضافه می شود. بنابراین به 4 بایت بعدی حافظه اشاره می کند و دیگر به همان 4 بایت قبلی اشاره نمی کند.


    مثال. اگر int را چهاربايت درنظر بگيريم، اشاره گر p هشت بايت به جلو حرکت می کند.

    int a;
    int p;
    p=&a;
    p=p+2;


    عمل ديگری که روی اشاره گر ها انجام می شو تفاضل است. می توان مقدار دو اشاره گر را از هم کم کرد و فاصله بين آنها را بدست آورد.


    مثال. اگر ptr1 و ptr2‌ هر دو اشاره گر باشند عبارت زير اختلاف فاصله آنها را می دهد.

    ptr1 - ptr2


    نکته. اگر اشاره گر به محل ناشناخته ای از حافظه حرکت کند و عملی روی آن انجام دهید ممکن است عملیات برنامه های دیگر کامپیوتر را با اشکال مواجه کنید.

    مقايسه دو متغير اشاره گر با هم تنها زمانی معتبر است که هردو به يک نوع داده اشاره کنند.


    مثال. عبارت زير زمانی درست است که اشاره گر ptr1 به آدرسی قبل از ptr2 اشاره کند.

    ptr1 < ptr2


    توجه کنيد که عمل‍يات ضرب و تقسیم روی یک اشاره گر انجام نمی گيرد و باعث بروز خطای کامپايلر می شود.

    بازدید : 1175 تاریخ : نویسنده : بهرام محمدپور | نظرات ()

    حافظه پویا

    برای درک بهتر اشاره گرها نیاز است درباره نحوه ذخیره اطلاعات درحافظه بیشتر بدانید. حافظه RAM شامل مجموعه ای از محل های ذخیره سازی است که هر محل توسط یک آدرس منحصر بفرد مشخص می شود. وقتی برنامه ای را اجرا می کنید کد برنامه (دستورالعمل های زبان ماشین برنامه) و داده هائی که برنامه با آنها کار می کند در حافظه قرار می گیرند. اگر متغیری در برنامه تعریف شده باشد کامپایلر محلی از حافظه را برای آن کنار گذاشته آدرس آنرا به اسم متغیر مربوط می کند. بنابراین وقتی در برنامه از اسم متغیر استفاده می شود اتوماتیک به آدرس موردنظر مراجعه می شود.

    اشاره گرها وقتی نقش ایفا می کنند که بخواهیم از حافظه پویا (يا heap) استفاده کنیم. ناحيه Heap فضای آزاد حافظه است که در اخت‍يار هيچ برنامه ای نيست و می تواند به صورت پويا استفاده می شود، يعنی در حين اجرای برنامه در صورت نياز اختصاص داده می شود و هنگامی که ديگر به آن احتياج نباشد آزاد می شود.

    دستورات new و delete برای تخصيص و بازپس گيری حافظه هنگام کار با حافظه پويا استفاده می شوند.

    دستور new فضائی از حافظه آزاد را به برنامه اختصاص می دهد. میزان فضای موردنیاز توسط نوع داده ای که بعد از دستور ذکر می شود تعیین می شود. اگر دستور موفق باشد اشاره گری به فضای گرفته شده را برمیگرداند. اگر شکست بخورد مقدار NULL را برمیگرداند.

    بعد از اینکه کار با حافظه پویا باید حافظه گرفته شده توسط دستور delete پس داده شود. به این ترتیب حافظه می تواند مجدد توسط برنامه های دیگر استفاده شود.


    مثال.

    IntPtr = new int;
    if (IntPtr == NULL) {
       cerr << "Could not allocate sufficient space" << endl;
       exit(1);
       }
    *IntPtr = 55;
    delete IntPtr;
    IntPtr = 0;


    بعد از delete یک اشاره گر آترا با مقدار 0 پر کنید تا تصادفا آن را دوباره استفاده نکنید.

    اگر فضا های گرفته شده از حافظه آزاد پس داده نشود و برنامه خاتمه پیدا کند برنامه اصطلاحا دارای مشکل memory leak است. میزان حافظه موجود یعد از اجرای برنامه کمتر از قبل از اجرای آن است. مگراینکه کامپیوتر راه اندازی مجدد شود. بنابراین سعی کنید همیشه حافظه های گرفته شده را آزاد کنید.

    دستورات new و delete دو حالت دارند؛ برای آرا‍یه ها ا‍ن دو دستور به صورت زیر استفاده می شوند.

    new[]();
    delete[]();


    مثال. برنامه زیر از حافظه پویا استفاده می کند. به آرایه a به اندازه 10 عدد صح‍یح حافظه اختصاص داد ه می شود. به b عددی صحیحی اختصاص می دهد با مقدار اولیه 89.

    #include <iostream.h>
    int main() {
       int * a= new int[10];
       int * b=new int(89) ;
       cout << "*b=" << *b << endl;
       *(a+5)=9;
       cout << "a[5]=" << *(a+5) << endl;
       delete [] a;
       delete b;
       return 0;
    }


    نکته. برای هر دستور new یک دستور delete باید باشد.
    نکته. بررسی کنید دستور new خطا یا NULL برنگردانده باشد.
    نکته. برای آرایه ها [] در دستورات new و delete لازم است.
    نکته. توابع ()malloc و ()free معادل دستورات new و delete هستند.

    بازدید : 1231 تاریخ : نویسنده : بهرام محمدپور | نظرات ()
    آمار سایت
  • آمار مطالب
  • کل مطالب : 4311
  • کل نظرات : 17
  • آمار کاربران
  • افراد آنلاین : 5
  • آمار بازدید
  • بازدید امروز : 1,373
  • باردید دیروز : 13,194
  • گوگل امروز : 13
  • گوگل دیروز : 36
  • بازدید هفته : 14,567
  • بازدید ماه : 153,377
  • بازدید سال : 841,297
  • بازدید کلی : 6,695,023
  • نظرسنجی
    چه مطالبی در سایت قرار دهیم؟





    کدهای اختصاصی