فرق overload کردن با default initialization - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

فرق overload کردن با default initialization

0 امتیاز

این 2 تا کد چه فرقی با هم دارن اصلا فرقی می کنه از کدومشون استفاده کنیم ؟

class C1
{
       void fun(int a=0); //default initialization
}

class C2
{
       void func();
       void func(int a);//overload
}

 

سوال شده دی 7, 1392  بوسیله ی ali_coder (امتیاز 35)   1 6 9
دوباره تگ گذاری شد بهمن 12, 1392 بوسیله ی BlueBlade

1 پاسخ

0 امتیاز

2 تا کد بالا که کلا متفاوتن اگر شما منظروتون همچین چیزیه :

c1.func()
c1.func(0)

c2.func()
c2.func(0)

 

که شاید در ظاهر مشابه باشن ولی در باطن فرق می کنن

اصولا شما وقتی از overload استفاده میکنی که 2 تا فانکشن با ورودی های متفاوت از نظر پیاده سازی  هم متفاوت باشن  یعنی مفهوم 2 شی متفاوت  که از یک کلاس واحد مشتق گرفتن رو هم ازش میشه برداشت کرد

ولی  default initialization صرفا یک تابع است با یک پیاده سازی واحد برای ورودی های متفاوت . یعنی بیشتربرای استفاده ساده تر از یک تابع هست  و کاملا با  overload از نظر مفهوم فرق می کنه

پاسخ داده شده دی 8, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
...