C ++ فنکشن اوور رائیڈنگ۔

C Function Overriding



اس آرٹیکل میں ، ہم C ++ پروگرامنگ زبان میں اوور رائیڈنگ فنکشن کا احاطہ کریں گے۔ C ++ رن ٹائم پولیمورفزم کی حمایت کرتا ہے۔

فنکشن اوور رائیڈنگ میں ، چائلڈ کلاس اس فنکشن کو نئے سرے سے متعین کرتی ہے جو پہلے ہی اس کی پیرنٹ کلاس میں متعین ہے۔







یہ پروگرامر کو قابل بناتا ہے کہ وہ کلاس سے مخصوص فعالیت حاصل کرے (حالانکہ اس کی وضاحت بیس کلاس میں کی گئی ہے)۔



اب ، ہم کچھ مثالیں دیکھیں گے اور C ++ میں فنکشن اوور رائیڈنگ تصور کو سمجھیں گے۔



مثال -1۔

میں نے مندرجہ ذیل مثال کے کوڈ میں دو کلاسوں کی وضاحت کی ہے - ایک بیس کلاس اور ایک ماخوذ کلاس۔ بیس کلاس کا ممبر فنکشن ہوتا ہے ، یعنی ڈسپ ()۔ Derived_Class بیس_کلاس سے وراثت میں ملا ہے۔ ڈسپ () فنکشن بیس_کلاس میں موجود ہے اور پھر ڈیریوڈ_کلاس میں نئی ​​وضاحت کی گئی ہے۔





مین () فنکشن میں ، Derived_Class کی ایک شے ، یعنی d ، بنائی گئی ہے۔ پھر ، ہم اخذ کردہ کلاس آبجیکٹ پر ڈسپ () فنکشن کہتے ہیں ، لہذا ماخوذ کلاس میں فنکشن طلب کیا جائے گا۔ بیس کلاس ورژن کو یہاں نظر انداز کیا گیا ہے۔ آپ اخذ کردہ کلاس میں بطور - ڈسپ () فنکشن دیکھ سکتے ہیں۔

#شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛

// بیس کلاس۔
کلاس بیس_کلاس۔
{
عوام:
باطلفائدہ()
{
لاگت<< بیس کلاس میں ڈسپ () فنکشن۔ <<endl؛
}

}؛

// اخذ کردہ کلاس۔
کلاس Derived_Class:پبلک بیس_کلاس۔
{
عوام:
باطلفائدہ()
{
لاگت<< 'ڈسپ () اخذ کردہ کلاس میں فنکشن' <<endl؛
}
}؛

intمرکزی()
{
ماخوذ_کلاس d۔؛
دفائدہ()؛ ماخوذ کلاس آبجیکٹ پر // ڈسپ () فنکشن۔
واپسی ؛
}



مثال 2۔

اس مثال میں ، ہم دیکھیں گے کہ کس طرح جان بوجھ کر اخذ کردہ کلاس آبجیکٹ کے ذریعے فنکشن کے بیس کلاس ورژن کو کال کریں۔ اخذ کردہ کلاس فنکشن کی تعریف میں ، ہم فنکشن کے بیس کلاس ورژن کو کال کرنے کے لیے اسکوپ ریزولوشن آپریٹر [::] استعمال کرتے ہیں۔

#شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛

کلاس بیس_کلاس۔
{
عوام:
باطلفائدہ()
{
لاگت<< بیس کلاس میں ڈسپ () فنکشن۔ <<endl؛
}

}؛

کلاس Derived_Class:پبلک بیس_کلاس۔
{
عوام:
باطلفائدہ()
{
بیس_کلاس۔::فائدہ()؛ // disp () کے بیس کلاس ورژن پر کال کریں
}
}؛

intمرکزی()
{
ماخوذ_کلاس d۔؛
دفائدہ()؛
واپسی ؛
}

مثال 3۔

یہ فنکشن اوور رائیڈنگ کی ایک اور مثال ہے۔ اس مثال میں ، ہم نے ایک والدین کی کلاس بنائی ہے - جانوروں اور دو اخذ کردہ کلاسوں - بتھ اور ڈاگ۔ بیس کلاس ، یعنی اینیمل کلاس ، میں ممبر فنکشن ساؤنڈ () ہوتا ہے۔

اخذ کردہ کلاس/چائلڈ کلاس میں ، یعنی ڈاگ ، ہم نے اسی فنکشن کی نئی وضاحت کی ہے ، یعنی sound () ، اس کی بیس کلاس کی تعریف کو اوور رائیڈ کرنے کے لیے۔ اسی طرح ، دوسرے اخذ کردہ طبقے ، یعنی بتھ میں ، ہم نے اسی فنکشن کی نئی وضاحت کی ہے ، یعنی ، آواز ()۔

مین () فنکشن میں ، ہم نے ڈاگ اور ڈک آف ڈک کا ڈاگ آبجیکٹ بنایا ہے۔ لہذا ، اب جب ہم کتے اور بطخ کے لیے صوتی () فنکشن کہتے ہیں تو آواز () فنکشن کا ماخوذ کلاس ورژن کال کرے گا۔ آپ پروگرام کی پیداوار دیکھ سکتے ہیں جیسا کہ ذیل میں دکھایا گیا ہے۔ لہذا ، فنکشن اوور رائیڈنگ کی مدد سے ، ہم اخذ کردہ کلاس مخصوص فنکشن کو طلب کرسکتے ہیں۔

#شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std؛

کلاس جانور
{
عوام:
باطلآواز()
{
لاگت<< 'جانوروں کی آواز!' <<endl؛
}

}؛

// ماخوذ کلاس - ڈاگ کلاس۔
کلاس کتا:عوامی جانور
{
عوام:
باطلآواز()
{
لاگت<< 'کتے کی آواز - بھونک۔' <<endl؛
}
}؛

// ماخوذ کلاس - بتھ کلاس۔
کلاس بتھ:عوامی جانور
{
عوام:
باطلآواز()
{
لاگت<< 'بطخ کی آواز <<endl؛
}
}؛


intمرکزی()
{
کتا کتا۔؛
بطخ بطخ۔؛

کتا.آواز()؛ // کتے کی آواز۔
بطخ.آواز()؛ // بطخ کی آواز ()۔

واپسی ؛
}

نتیجہ

اس آرٹیکل میں ، میں نے فنکشن کو اوور رائیڈنگ کی وضاحت کی ہے۔ سی ++۔ . C ++ زبان رن ٹائم پولیمورفزم کی حمایت کرتی ہے۔ فنکشن اوور رائیڈنگ C ++ میں رن ٹائم پولیمورفزم کو حاصل کرنے میں مدد کرتا ہے۔ اس مضمون نے فنکشن اوور رائیڈنگ کے تصور اور فنکشن اوور رائیڈنگ کا استعمال کرتے ہوئے رن ٹائم پولیمورفزم کو کیسے حاصل کیا جائے اس پر غور کیا۔