ژانویه
12
2020

کلمه کلیدی override

از ورژن ۱۱ کلمه کلیدی override به دیکشنری زبان ++C اضافه شده. در این پست کاربرد این کلمه رو بررسی میکنم.

ابتدا به مثال زیر توجه کنید:

 

در این مثال انتظار چاپ چه مقداری داریم؟ در ظاهر تابع پرینت در کلاس فرزند override شده و به نظر میرسه که مقدار rectangle باید در خروجی چاپ بشه اما اینطور نیست. علت هم وجود const در تعریف متد در کلاس rectangle هست. در این مورد کامپایلر تشخیص میده که این متد مجزا از متد نوشته شده در کلاس shape هست و عمل override کردن که شاید منظور اصلی ما بوده انجام نمیشه.

در ورژن ۱۱ سی پلاس پلاس کلمه کلیدی override برای جلوگیری از بروز چنین اشتباهات سهوی به زبان اضافه شد. به کد زیر توجه کنید:

 

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

مورد دیگه ای هم هست که میتونه منجر به خطای سهوی بشه:

 

اینجا هم مشابه مثال قبل توابع از هم مجزا تشخیص داده میشن در حالیکه شاید منظور ما override شدن اونها بوده باشه.

عادت به گذاشتن کلمه کلیدی override انتهای متدهایی که واقعا قصد override کردن اونها داریم میتونه در جلوگیری از خطاهای زمان اجرا کمک کننده باشه. موفق و پیروز باشید


نوشته‌های مرتبط

درباره نویسنده

برنامه‌نویس ++‏C/C‏ - برنامه‌نویس سیستم‌های گرافیکی با استفاده از کتابخانه ‏OpenGL - برنامه‌نویس #‏C و ..‏



فرستادن دیدگاه