تفاوت بین تابع مجازی و overriding تابع چیست؟
تفاوت بین تابع مجازی و overriding تابع چیست؟

تصویری: تفاوت بین تابع مجازی و overriding تابع چیست؟

تصویری: تفاوت بین تابع مجازی و overriding تابع چیست؟
تصویری: تفاوت بین Overriding تابع و Function Overloading در C++ -46 2024, نوامبر
Anonim

توابع مجازی نمی تواند ثابت باشد و همچنین نمی تواند دوست باشد عملکرد از یک کلاس دیگر آنها همیشه در کلاس پایه و تعریف می شوند لغو شد در کلاس مشتق شده برای کلاس مشتق شده اجباری نیست نادیده گرفتن (یا دوباره تعریف کنید عملکرد مجازی )، در آن صورت نسخه کلاس پایه از عملکرد استفاده می شود.

علاوه بر این، تفاوت بین تابع مجازی و تابع مجازی خالص چیست؟

اصلی تفاوت بین ' تابع مجازی و تابع مجازی خالص "این است" عملکرد مجازی ' تعریف خود را دارد در کلاس پایه و همچنین کلاس های مشتق شده ارث بری آن را دوباره تعریف می کنند. این تابع مجازی خالص هیچ تعریفی ندارد در کلاس پایه، و تمام کلاس های مشتق شده ارث بری باید آن را دوباره تعریف کنند.

پس از آن، سوال این است که در C++ چه تابعی نادیده گرفته می شود؟ تابع C++ نادیده گرفته می شود . اگر کلاس مشتق شده همان را تعریف می کند عملکرد همانطور که در کلاس پایه آن تعریف شده است، به عنوان شناخته شده است فراگیر تابع در C++ برای دستیابی به چند شکلی زمان اجرا استفاده می شود. این شما را قادر می سازد تا پیاده سازی خاصی را ارائه دهید عملکرد که قبلاً توسط کلاس پایه آن ارائه شده است.

به همین ترتیب، مردم می پرسند، چرا ما از توابع مجازی استفاده می کنیم؟

توابع مجازی هستند استفاده شده برای حمایت از "چند شکلی زمان اجرا". وقتی که عملکرد مجازی با استفاده از یک اشاره گر کلاس پایه فراخوانی می شود، کامپایلر در زمان اجرا تصمیم می گیرد که کدام نسخه از آن عملکرد یعنی نسخه کلاس پایه یا نسخه کلاس مشتق شده لغو شده باید فراخوانی شود. این چند شکلی زمان اجرا نامیده می شود.

آیا می توانید یک تابع غیر مجازی را در C++ لغو کنید؟

در c++ همه اعضای کلاس کارکرد هستند غیر - مجازی به صورت پیش فرض. آنها می توان ساخته شده است مجازی با استفاده از مجازی کلمه کلیدی در عملکرد امضا همانطور که در بالا اشاره شد اگر را عملکرد از کلاس پایه ساخته شده است مجازی سپس عملکرد از کلاس مشتق شده یا کودک عملکرد با همین نام می تواند لغو شود کلاس پایه عملکرد.

توصیه شده: