سلام!

در جلسات پیش با توابع مجازی آشنا شدیم. حالا می خواهیم شما را با توابع مجازی مجرد (یا pure) آشنا کنیم.

تابع مجازی مجرد، تابعی مجازی است که بدنه ندارد. برای این که به کامپایلر بگوییم که تابع مجازی مورد نظر، بدنه ندارد، باید به شکل زیر عمل کنیم؛

virtual void f( Arguments ) = 0;

حالا اگر در یک کلاس، حدّاقل یکی از توابع مجازی، مجرد (pure) باشد، شما دیگر قابلیّت ساخت یک Object از آن کلاس را نخواهید داشت. دلیل آن هم کاملا مشخّص است؛ فرض کنید در کلاس Test، تابع مجازی مجردی به نام f دارید. در این صورت اگر در برنامه ی خود بنویسید

Test_Obj.f( Arguments );

کامپایلر نمی داند که باید چه کار کند. برای همین هم ارور می دهد. به این کلاس ها abstract می گویند.

توجه داشته باشید. همان طور که می دانید، اگر در کلاس وارث، تابع مجازی را بازتعریف (override) نکنید، کلاس وارث همان تابع مجازی مجرد را به ارث می برد و برای همین هم تبدیل به یک کلاس abstract می شود.

فعلا نکته ی دیگری نیاز نیست.

موفق باشید!