فراخوانی متدهای virtual در سازنده

خیلی خلاصه: هیچوقت از متدهای virtual در سازنده و نابودگر کلاس استفاده نکنید. در سی شارپ و جاوا استفاده از این نوع متدها مشکلی ایجاد نمیکند. اما در C++ متدهای virtual در سازنده و نابودگر کلاس نادیده گرفته شده و حتی در کلاسهای مشتق شده نیز متدهای کلاس پایه صدا زده می شوند.
مثال:
[cpp]
class base
{
public:
base()
{
init();
}
virtual void init()
{
cout<<"base"; } } class derived: public base { public: derived(): base() { } virtual void init() { cout<<"derived"; } } void f() { derived d; } [/cpp] در این مثال با فراخوانی سازنده کلاس derived در واقع انتظار داریم که روی صفحه عبارت derived نوشته شود، در صورتیکه در واقعیت عبارت base به نمایش خواهد آمد. توضیحات بیشتر

1 فکر می‌کنند “فراخوانی متدهای virtual در سازنده

  1. اگه میشه در مورد template ها و توابع virtual مطالب بیشتری بزارید .مخصوصاً توابع virtual و موارد استفاده و فوایدشون
    ممنون

پاسخ دادن به majid لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *