close
دانلود فیلم
برنامه نویسی سی

تابع مجازی

يک تابع مجازی (virtual function) به تابعی گفته می شود که در کلاس پايه اعلان شده است و مجددا توسط کلاس مشتق شده تعريف می شود. اگر کلاس پايه شامل تابع مجازی باشد کلاس مشتق شده می تواند اين تابع مجازی را با توجه به نيازهای خود مجدد تعريف می کند.

برای ايجاد يک تابع مجازی کلمه کليدی virtual در ابتدای اعلان تابع اضافه می شود.


مثال. تابع مجازی show در کلاس پايه دوباره در کلاس مشتق شده اعلان شده است.

#include <iostream.h>
class Base {
public:
  virtual void Show() {
    cout << "Base::Show" << endl;
  }
};

class Derived : public Base {
public:
  void Show() {
    cout << "Derived::Show" << endl;
  }
  void Value(int i) {
    cout << i << endl;
  }
};

int main() {
  Derived d;
  d.Show();
}


نکته. به کلاسی که دارای يک تابع مجازی باشد کلاس پلی مورفيک (polymorphic) می گويند.
نکته. وقتی يک تابع مجازی در کلاس مشتق شده دوباره تعريف می شود نوشتن عبارت virtual در کلاس مجازی الزامی نيست.
نکته. اگر کلاس مشتق شده تابع مجازی کلاس پايه را مجددا تعريف نکند نسخه پيش فرض کلاس پايه استفاده می شود.
نکته. نمی توانيد مقدار برگشتی يک تابع مجازی را در طی ابطال تغيير دهيد. اگر نوع برگشتی تابع override با تابع مجازی متفاوت باشد نوع پارامترها هم بايد تفاوت داشته باشند.

به کانال تلگرام سایت ما بپیوندید