PDA

View Full Version : سوال: تعریف عضو کلاس با auto,extern,register



sia abedi
جمعه 27 شهریور 1388, 21:05 عصر
سلام بچه ها اميدوارم كه طاعات وعباداتتون مورد قبول حق تعالي قرار گرفته باشه.
يه چند تا سوال برام پيش اومده البته همه‌ي اين سوال ها در مورد كتاب جعفرنژاده:
1.در صفحه‌ي 159 بخش كلاس ها و اشياء:نوشته كه هيچ عضوي نمي‌تواند با كلاس حافظه‌ي auto,extern,register تعريف بشه.
مگر ما نگفته بوديم كه اگر كلاس حافظه ذكر نشه به طور پيش فرض به طور autoتعريف ميشه پس چرا گفته كه با كلاس حافظه‌ي autoنميشه متغير تعريف كرد.
علي الحساب اين را جواب بدي تا بقيه را بپرسم گفتم اگر همه را با هم بپرسم گيج مي‌شم

Nima_NF
شنبه 28 شهریور 1388, 01:08 صبح
بحث تعریف متغیر در کلاس ها بحثی متفاوت هست، کلاس ها به خاطر ماهیت تخصیص حافظه خود، محدودیت هایی در تعریف متغیر دارند که یک نمونه آن همین مورد هست. نمونه دیگر عدم امکان مقدار دهی به متغیر ها هنگام تعریف هست (که البته قرار هست در استاندارد جدید امسال ++C به آن افزوده شود).

sia abedi
شنبه 28 شهریور 1388, 15:57 عصر
بحث تعریف متغیر در کلاس ها بحثی متفاوت هست، کلاس ها به خاطر ماهیت تخصیص حافظه خود، محدودیت هایی در تعریف متغیر دارند که یک نمونه آن همین مورد هست. نمونه دیگر عدم امکان مقدار دهی به متغیر ها هنگام تعریف هست (که البته قرار هست در استاندارد جدید امسال ++C به آن افزوده شود).
يعني منظور شما اينه كه وقتي ما متغيري را در كلاس تعريف مي‌كنيم كلاس حافظه‌ي اون آتو نيست.پس اگر آتو نيست كلاس حافظه‌ي متغيري كه در كلاس تعريف ميشه چيه؟(براي اين اين سوال را مي‌كنم كه در توضيحات همين كتاب گفته بود كه هر متغيري كه كلاس حافظش ذكر نشه كلاسش آتو هست)

Nima_NF
شنبه 28 شهریور 1388, 20:53 عصر
منظور این نیست که کلاس حافظه auto نیست، بلکه منظور این هست که شما نمی توانید از کلمه کلیدی auto استفاده کنید. (همه متغیر ها بدون extern و static و... به طور پیش فرض auto هستند)

ضمنا آگاه باشید که در استاندارد جدید C++09 کلمه کلیدی auto به عنوان یک storage class specifier دیگر وجود ندارد و حذف خواهد شد، لذا در آینده نزدیک auto ماهیت و قابلیت جدیدی در C++ خواهد داشت.

sia abedi
دوشنبه 30 شهریور 1388, 23:17 عصر
نمي‌دونم براي چي اسم تاپيك اين در اومد آخه من مي‌خواستم اسمش را به بگذارم چند تا سوال به هر حال سوال دوم:
در مورد مخرب هست.اول اين كه مي‌خواستم بدونم تابع مخرب را حتي اگر هم تعريف نكنيم وجود داره ديگه؟ويك سوال ديگه در مورد اين مبحث اينه كه تابع مخرب را ميشه وسط برنامه كال كرد؟ اگر ميشه چه جوري؟
احساس مي‌كنم كه كتاب جعفر نژاد بعضي از مباحث را ناقص نوشه كسي لينك دانلود كتاب ترجمه شده‌ي دايتل&دايتل را نداره؟اصلا اين كتاب وجود داره؟ حالا خودم يك گشتي توي انجمن هم يك گشتي ميزنم.

Nima_NF
سه شنبه 31 شهریور 1388, 11:29 صبح
نمي‌دونم براي چي اسم تاپيك اين در اومد آخه من مي‌خواستم اسمش را به بگذارم چند تا سوال کل این بخش برای پرسیدن سوالات مختلف ++C/C هست.
طبق قوانین سایت باید یک سوال در تاپیک پرسید و عنوان مناسب نیز برای آن انتخاب کرد که مرتبط به همان سوال باشد.


در مورد مخرب هست.اول اين كه مي‌خواستم بدونم تابع مخرب را حتي اگر هم تعريف نكنيم وجود داره ديگه؟بله، وجود دارد، اما شما سعی کنید همیشه خودتان یک نمونه بسازید تا موارد لازم را انجام دهید.



ويك سوال ديگه در مورد اين مبحث اينه كه تابع مخرب را ميشه وسط برنامه كال كرد؟ اگر ميشه چه جوري؟مثل سایر توابع، البته به همراه ~ به این شکل:



ClassA Aobj;

Aobj.~ClassA();

alisina
شنبه 04 مهر 1388, 16:46 عصر
توصیه میشه همیشه تابع مخربو خودمون تعریف کنیم مثلاً در بحث ماتریس ها وقتی حافظه میگیریم تابع مخرب باید بعد اتمام کار حافظه ای رو که گرفته آزاد کنه.اگه ما مخرب نذاریم ممکنه یه جایی از برنامه دیگه حافظه برامون نمونه و برنامه از اجرا خارج بشه