ورود

نسخه کامل مشاهده نسخه کامل : ایراد این کد ساده



Petros
29-09-2011, 09:52
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

سوالم اینه، توی Main بعد از این که انتساب Supper به Lunch صورت میگیره چه بلایی سر لانچ میاد که نمیشه به D انتسابش کرد؟ مرض Void چیه؟

در ضمن میدونم راه حلش اینه که return * this بزارم ولی مورد این چیه؟

god of war 2
29-09-2011, 17:51
سربارگذاری یک عملگر جایگزینی مانند کد شما برای عباراتی که دارای دو مولفه هستند (مثلا a = b) درست هست چون در این حالت نیازی به مقدار سوم که از جایگزینی دو مقدار قبلی (a = b = c) بدست آمده نداریم. ولی در عبارات چند مولفه ای همواره نیاز به آخرین مقدار از دو عمل جایگزینی قبلی داریم.
عبارت:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هم یک قرار داد هست که باید رعایت شود.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Petros
29-09-2011, 18:19
داداش برقرار باشی ولی این رو نگا:
a = c = 2+3

راحت از سمت راست 2 به علاوه 3 میشه، به C داده میشه و ....

میشه بیشتر توضیح بدید؟

god of war 2
29-09-2011, 20:24
داداش برقرار باشی ولی این رو نگا:
a = c = 2+3

راحت از سمت راست 2 به علاوه 3 میشه، به C داده میشه و ....
درسته. من هم نظر مخالفی ندادم.
عملگری که سربارگذاری کرده بودید از نوع void بود که رابطه بالا رو نقض میکرد. یعنی هیچ مقداری برنمیگردوند که در مولفه بعدی استفاده بشه.
در مثال خودتون 2+3 در c جایگزین میشه حالا اگر عملگر void برگردونه هیچ مقداری وجود نداره که در a جایگزین بشه.
امیدوارم منظورمو متوجه شده باشید.

Petros
29-09-2011, 21:18
احسنت برادر

فهمیدم. توی همون مثال 2+3 یه int برگشت داده میشه و در C قرارر میگیره اما تو آبجکت ها فقط فیلدها به هم نسبت داده میشن و هیچ چیز برگشت داده نمیشه تا در Lunch قرار بگیره. درست فهمیدم؟

god of war 2
29-09-2011, 22:07
احسنت برادر

فهمیدم. توی همون مثال 2+3 یه int برگشت داده میشه و در C قرارر میگیره اما تو آبجکت ها فقط فیلدها به هم نسبت داده میشن و هیچ چیز برگشت داده نمیشه تا در Lunch قرار بگیره. درست فهمیدم؟
بله درسته.