PDA

View Full Version : سوال: سربارگذاری عملگرها



tahere-20
یک شنبه 20 آذر 1390, 09:28 صبح
چرا نمیتوان عملگرهای " . *. :: :? sizeof" را سربارگذاری کرد؟

shahmohammadi
یک شنبه 20 آذر 1390, 16:38 عصر
سلام.
تو سی پلاس پلاس همه عملگر ها به جز موارد زیر رو می شه سربارگذازی کرد:
. (دات) :: ?: sizeof

sizeof رو نمیشه سربارگذاری کرد چون ذاتا و دور از چشم ما برای اعمالی مثل افرایش اشاره گرها به کار میره. مثلا تو یه آرایه از نوع اینت با هر بار افزایش چهار بایت جلو می ریم، نه یک بایت که اون چهاربایت اندازه اینت هست. ویا وقبی عملگر ++ رو برای اشاره گری بنویسیم مقدار آدرسی که در اشاره گز ذخیره شده به اندازه ی اندازه ی اون نوع افزایش می یابه.

درمورد ?: هیچ نیاز ی به سربارگذاری نیست.

کلا شما وقتی نیاز به سربارگذاری دارید که یه نوعی مثل ماتریس، بردار، کسر و.. رو بخاهید پیاده سازی کنید، حالا چون تو ریاضیات اینها عملیات خاصی دارند پس باید عملگر هاش رو هم پیاده ساری کنیم. در واقع تو ریاضیات وقتی با ماتریس ها کار می کنیم، رو شون عمل + و - انجام می دیم نه sizeof یا ؟: یا دات.

عملگر های فوق به درد کامپایلر و محیط برنامه نویسی می خورند نه به درد ریاضیات و انواعی که ما تعریف می کنیم.

این لینک (http://www2.research.att.com/%7Ebs/bs_faq2.html#overload-dot) هم در این مورد مفید هست.
موفق باشید.