نمایش نتایج 1 تا 4 از 4

نام تاپیک: چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند؟

  1. #1
    کاربر دائمی آواتار complexcoding
    تاریخ عضویت
    مرداد 1389
    محل زندگی
    قزوین
    سن
    33
    پست
    744

    Question چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند؟

    چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند، مگر آنکه از نوع اشاره گر باشند.???

    Class test{
    int a;
    public:
    test *b;
    };


    با تشکر از دوستان

  2. #2
    کاربر دائمی آواتار Ananas
    تاریخ عضویت
    آبان 1390
    محل زندگی
    طول 50 و عرض 34 درجه
    سن
    36
    پست
    894

    نقل قول: چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند؟

    خوب نمیشه که! اینجوری بینهایت شی داری! ببین :
    یک شی میسازی که خودش یک شی داخلش داره
    که اون هم یک شی داخلش داره
    که اون هم یک شی داخلش داره
    که اون هم یک شی داخلش داره
    که اون هم یک شی داخلش داره
    که...
    ...
    راه حلش اینه که یک شی بسازی که در صورت لزوم بتونه یک شی تو خودش داشته باشه و اگه لازم نباشه بتونه اون شی رو نداشته باشه و این کار با اشاره گر انجام میشه. شما میتونی اشاره گر داخل یک شی رو به NULL تنظیم کنی میتونی به آدرس شی دیگه ای و یا خودش تنظیم کنی.

  3. #3

    Lightbulb نقل قول: چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند؟

    نقل قول نوشته شده توسط complexcoding مشاهده تاپیک
    چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند، مگر آنکه از نوع اشاره گر باشند.???

    Class test{
    int a;
    public:
    test *b;
    };


    با تشکر از دوستان
    سلام به شما دوست عزیز ، سوال خوبی رو مطرح کردید حتما شما میدونید با تعریف یک کلاس تا زمانی که شیئی از اون ساخته نشده فضایی هم از حافظه در گیر نمیشه (چرا؟) اما زمانی که قراره یک شی ایجاد بشه فضایی برابر با مجموع فضای تک تک اعضای کلاس برای اون شی در نظر گرفته میشه مثلا توی کدی که شما نوشتید اگه قرار باشه شیئی از کلاس test ایجاد بشه فضایی برابر با فضای int a بعلاوه ی پوینتر b خواهد داشت حالا فرض کنید اشتباها شیئی از همین کلاس رو به عنوان عضو همین کلاس در نظر بگیریم اون موقع حجم یه شی از این کلاس چقدره ؟! برابر با حجم یه شی از همین کلاس + مقداری ثابت !!!!!

    X=x+c !!!!!!!!!!!!!

  4. #4

    نقل قول: چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند؟

    نقل قول نوشته شده توسط complexcoding مشاهده تاپیک
    چرا اعضای یک کلاس نمی توانند شی تعریف شده از همان کلاس باشند، مگر آنکه از نوع اشاره گر باشند.???

    Class test{
    int a;
    public:
    test *b;
    };


    با تشکر از دوستان
    سلام به شما دوست عزیز ، سوال خوبی رو مطرح کردید حتما شما میدونید با تعریف یک کلاس تا زمانی که شیئی از اون ساخته نشده فضایی هم از حافظه در گیر نمیشه (چرا؟) اما زمانی که قراره یک شی ایجاد بشه فضایی برابر با مجموع فضای تک تک اعضای کلاس برای اون شی در نظر گرفته میشه مثلا توی کدی که شما نوشتید اگه قرار باشه شیئی از کلاس test ایجاد بشه فضایی برابر با فضای int a (دو یا چاهر بایت مثلا چهار بایت) بعلاوه ی پوینتر b (دو بایت)خواهد داشت یعنی اگه قرار باشه با کد شما شیئی از کلاس test ساخته بشه شش بایت فضای حافظه رو میگیره حالا فرض کنید این کلاس رو از نو مینویسیم و اشتباها یه شیئی از این کلاس رو عضو خودش قرار میدیم و میخوایم یه شیئی از این کلاس بسازیم ، خب به فرض اینکه کامپایلر به ما گیر نده میسازیم سوالی که مطرح میشه اینه ، سایز شیئی که ساختیم چقدره ؟ از اونجایی که یه شی از نوع خودش تو دل خودش داره بعلاوه متغییر ها ی دیگه سایز شی جدید برابر میشه با سایز خودش بعلاوه یه مقدار دیگه !!!!! شدنیه ؟!!!!
    X=x+c !!!!!!!!!!!!! (لطفا به دید ریاضی بهش نگاه کن نه برنامه نویسی !)
    اما پوینتر چون سایز متغییری نداره و همیشه دو بایته میتونه تو کلاسی از نوع خودش هم حضور داشته باشه
    دوست عزیز با دلایل دیگه ای هم میشه این قضیه رو ثابت کرد اگه لازم شد بگو تا مطرحشون کنم . . .

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •