سی ++ ان پروگرامنگ زبانوں میں سے ایک ہے جو بہت لچکدار ہے اور اس میں آبجیکٹ پر مبنی پروگرامنگ کی متعدد خصوصیات کا بھی احاطہ کیا گیا ہے۔ اس پروگرامنگ زبان کی ایک اور خصوصیت اوورلوڈنگ ہے۔مندرجہ ذیل اشارے اس 'C ++ میں فنکشن اوورلوڈنگ' مضمون میں شامل ہوں گے۔
- سی ++ اوورلوڈنگ
- C ++ میں اوورلوڈنگ کی اقسام
- C ++ میں فنکشن اوورلوڈنگ کیا ہے؟
- دلائل کی تعداد کو تبدیل کرکے
- مختلف قسم کے دلائل رکھنے سے
- C ++ میں فنکشن اوورلوڈنگ کے فوائد
- سی ++ میں فنکشن اوورلوڈنگ کے نقصانات
- فنکشن اوورلوڈنگ اور ابہام
سی ++ اوورلوڈنگ
جب ہم ایک کلاس کے دو یا دو سے زیادہ ممبر بناتے ہیں جو ایک ہی نام کے حامل ہوتے ہیں لیکن تعداد میں یا پیرامیٹرز میں مختلف ہوتے ہیں تو ، اسے C ++ اوورلوڈنگ کہا جاتا ہے۔ C ++ میں ، ہم اوورلوڈ کرسکتے ہیں:
- طریقوں ،
- کنسٹرکٹرز ، اور
- اشاریہ جات کی خصوصیات
C ++ میں اوورلوڈنگ کی اقسام
سی ++ میں فنکشن اوورلوڈنگ کیا ہے؟
C ++ میں فنکشن اوورلوڈنگ ایک ہی نام والے کلاس کے دو یا زیادہ ممبران کے افعال رکھنے کے عمل کے طور پر تعریف کی جاسکتی ہے ، لیکن پیرامیٹرز میں مختلف ہے۔ فنکشن اوورلوڈنگ میں ، فنکشن کو ضرورت کے مطابق مختلف قسم کے دلائل یا مختلف دلائل کا استعمال کرتے ہوئے یا تو نئے سرے سے تعبیر کیا جاسکتا ہے۔ صرف ان ہی اختلافات کے ذریعہ تالیف دہندگان دو اوورلوڈ افعال میں فرق کرسکتا ہے۔
فنکشن اوورلوڈنگ کا ایک سب سے بڑا فائدہ یہ ہے کہ اس سے پروگرام کی پڑھنے کی اہلیت میں اضافہ ہوتا ہے کیونکہ ہمیں بار بار ایک ہی کارروائی کے لئے مختلف نام استعمال کرنے کی ضرورت نہیں ہے۔
دلائل کی تعداد کو تبدیل کرکے
فنکشن اوورلوڈنگ کے اس طریقے میں ، ہم ایک ہی نام کے ساتھ دو افعال کی وضاحت کرتے ہیں لیکن ایک ہی قسم کے پیرامیٹرز کی ایک مختلف تعداد۔ مثال کے طور پر ، نیچے دیئے گئے پروگرام میں ، ہم نے دو اور تین عدد کی رقم کو واپس کرنے کے لئے دو اضافی () افعال کیے ہیں۔
// پہلے فنکشن ڈیفینس انٹ ایڈ (انٹ اے ، انٹ بی) out کوٹ<< a+b } // second overloaded function definition int add(int a, int b, int c) { cout << a+b+c }
یہاں ایڈ () فنکشن کو اوورلوڈ کہا جاتا ہے ، کیوں کہ اس کی دو تعریفیں ہیں ، ایک جو دو دلائل کو قبول کرتی ہے اور دوسرا جو تین دلائل کو قبول کرتا ہے۔ کون سا اضافہ () فنکشن بلایا جائے گا ، دلائل کی تعداد پر منحصر ہے۔
int main () {add (10، 20) // add () 2 پیرامیٹر کے ساتھ ایڈ (10، 20، 30) // کہا جائے گا (3) پیرامیٹر کے ساتھ مجموعہ () کہا جائے گا}
# نام کی جگہ ایس ٹی ڈی انٹ ایڈی (انٹ اے ، انٹ بی) {کوٹ کا استعمال کرتے ہوئے شامل کریں<< a+b <مندرجہ بالا مثال میں ، ہم اس کے دلائل کی تعداد کو تبدیل کرکے () فنکشن کو اوورلوڈ کرتے ہیں۔ پہلے ہم دو پیرامیٹرز کے ساتھ ایک ایڈ () فنکشن کی وضاحت کرتے ہیں ، پھر ہم پھر ایڈ () فنکشن کی وضاحت کرکے اس کو اوورلوڈ کرتے ہیں لیکن اس بار تین پیرامیٹرز کے ساتھ۔
مختلف قسم کے دلائل رکھنے سے
اس طریقہ کار میں ، ہم ایک ہی نام اور ایک ہی تعداد میں پیرامیٹرز کے ساتھ دو یا زیادہ افعال کی وضاحت کرتے ہیں ، لیکن ان پیرامیٹرز کے لئے استعمال ہونے والے ڈیٹا کی نوعیت مختلف ہے۔ مثال کے طور پر اس پروگرام میں ، ہمارے پاس تین شامل () فنکشن ہیں ، پہلے میں دو عدد دلائل ملتے ہیں ، دوسرے کو دو فلوٹ دلائل مل جاتے ہیں اور تیسرے کو دو ڈبل دلائل ملتے ہیں۔
# نام کی جگہ ایس ٹی ڈی انٹ ایڈی (انٹ ایکس ایکس ، انٹ وائی) // پہلی تعریف {کیوٹ کا استعمال کرتے ہوئے شامل کریں<< x+y << endl return 0 } float add(float a, float b) { cout << a+b << endl return 0 } double add(double x, double y) { cout << x+y << endl return 0 } int main() { add(20, 40) add(23.45f, 34.5f) add(40.24, 20.433) }فائل کلاس کی مثال پیدا کرنے کی کیا وجوہات ہیں؟مندرجہ بالا مثال میں ، ہم نے () فنکشن کی وضاحت تین بار کی ہے۔ پہلا پیرامیٹر کے طور پر ، دوسرے پیرامیٹر کے طور پر فلوٹ اور تیسرا پیرامیٹر کے طور پر ڈبل استعمال کرتے ہوئے۔
اس طرح ہم دو بار ایڈ () فنکشن کو اوور رائیڈ کرتے ہیں۔سی ++ میں فنکشن اوورلوڈنگ کے فوائد
ہم اپنے پروگرام کی میموری کی جگہ ، مستقل مزاجی ، اور پڑھنے کی اہلیت کو بچانے کے لئے فنکشن اوورلوڈنگ کا استعمال کرتے ہیں۔
استعمال فنکشن اوورلوڈنگ تصور کے ساتھ ، ہم ایک ہی نام سے ایک سے زیادہ فنکشن تیار کرسکتے ہیں
فنکشن اوورلوڈنگ پولیمورفزم کے طرز عمل کو ظاہر کرتی ہے جو ہمیں مختلف سلوک کرنے کی اجازت دیتی ہے ، حالانکہ فنکشن کے ایک ہی نام کا استعمال کرتے ہوئے کچھ لنک ہوگا۔
فنکشن سے زیادہ بوجھ پروگرام کی عمل آوری کو تیز کرتا ہے۔
فنکشن اوورلوڈنگ کا استعمال کوڈ دوبارہ پریوستیت کے لئے اور میموری کو بچانے کے لئے بھی کیا جاتا ہے۔
پیرامیٹر کی قسم پر مبنی کلاس کا طریقہ لوڈ کرنے میں ایپلی کیشن کو مدد ملتی ہے۔
پروگرام جاوا سے باہر نکلنے کا طریقہکوڈ کی دیکھ بھال آسان ہے۔
سی ++ میں فنکشن اوورلوڈنگ کے نقصانات
- فنکشن اعلامیہ جو صرف اس کی واپسی کی قسم سے مختلف ہیں فنکشن اوورلوڈنگ کے عمل کے ساتھ اوورلوڈ نہیں ہوسکتے ہیں۔
- ایک ہی پیرامیٹرز یا ایک ہی نام کی اقسام کے ساتھ ممبر فنکشن کے اعلامیہ کو اوورلوڈ نہیں کیا جاسکتا ہے اگر ان میں سے کسی کو جامد ممبر فنکشن کے طور پر اعلان کیا جائے۔
کلاس XYZ {جامد باطل فنک () باطل فنک () // غلطی}فنکشن اوورلوڈنگ اور ابہام
جب مرتب کرنے والا یہ فیصلہ کرنے سے قاصر ہوتا ہے کہ اوورلوڈڈ افعال میں سے کون سے فنکشن کو پہلے شروع کرنا چاہئے ، تو اس صورتحال کو فنکشن اوورلوڈنگ ابہام کے نام سے جانا جاتا ہے۔ اگر یہ ابہام کی خرابی ظاہر کرتا ہے تو کمپائلر پروگرام نہیں چلاتا ہے۔ کام سے زیادہ اوورلوڈنگ ابہام کی وجوہات:
- تبادلوں کی قسم۔
- پہلے سے طے شدہ دلائل کے ساتھ کام کرنا۔
- حوالہ سے پاس کے ساتھ کام کرنا
تبادلوں کی قسم:
# نام کی جگہ ایس ٹی ڈی باطل فنکشن (فلوٹ) باطل فنکشن (انٹ) باطل فنکشن (فلوٹ ایکس) {ایس ٹی ڈی :: کووٹ کا استعمال کرتے ہوئے شامل کریں<< 'Value of x is : ' <مذکورہ بالا مثال نے ایک غلطی پھینک دی ہے - 'اوورلوڈڈ کال 'فنکشن (ڈبل) کی کال' مبہم ہے '۔ فنکشن (3.4) پہلے فنکشن کو کال کرے گا۔ فنکشن (34) ہماری پیش گوئی کے مطابق دوسرے فنکشن کو کال کرتا ہے۔ لیکن ایسا نہیں ہوتا ہے کیونکہ سی ++ میں تمام فلوٹنگ پوائنٹ مستحکم افراد کو ڈبل کی طرح سلوک کیا جاتا ہے۔ اگر ہم فلوٹ متغیر کو ایک ڈبل متغیر کی جگہ لیں تو ، پروگرام ٹھیک کام کرے گا۔ لہذا ہم اس کو فلوٹ سے ڈبل تک ایک قسم کی تبدیلی کی غلطی قرار دیتے ہیں۔
پہلے سے طے شدہ دلائل کے ساتھ کام کرنا:
# نام کی جگہ ایس ٹی ڈی باطل فنکشن (انٹ) ، باطل فنکشن (انٹ ، انٹ) باطل فنکشن (انٹ ایکس) {ایس ٹی ڈی :: کوٹ کا استعمال کرتے ہوئے شامل کریں<< 'Value of x is : ' <مذکورہ بالا مثال کے طور پر ایک غلطی ہوتی ہے جس میں کہا جاتا ہے کہ 'اوورلوڈڈ کی کال (تفریح)' مبہم ہے '، اس کی وجہ یہ ہے کہ فنکشن (int y، int z = 12) کو دو طرح سے کہا جاسکتا ہے:
- ایک دلیل کے ساتھ فنکشن کو کال کرکے (اور یہ خود بخود z = 12 کی قدر لے جائے گا)
- تقریب کو دو دلائل کے ساتھ بلاکر۔
جب ہم فنکشن کو کہتے ہیں: فنکشن (12) ہم مکمل طور پر فنکشن (انٹ) اور فنکشن (انٹ ، انٹ) دونوں کی حالت کو پُر کرتے ہیں اس طرح تالیف ایک ابہام میں پڑ جاتا ہے جس میں ایک خرابی ظاہر ہوتی ہے۔
حوالہ سے پاس کے ساتھ کام
# نام کی جگہ ایس ٹی ڈی باطل فنکشن (INT) باطل فنکشن (int &) باطل فنکشن (int a) {std :: cout کا استعمال کرتے ہوئے شامل کریں<< 'Value of a is : ' <مذکورہ پروگرام میں غلطی ہوتی ہے جس میں کہا گیا ہے کہ 'اوورلوڈڈ کی کال (تفریح () اور)’ مبہم ہے '۔ جیسا کہ ہم دیکھتے ہیں کہ پہلے فنکشن میں ایک عدد دلیل لیتا ہے اور دوسرا فنکشن ایک ریفرنس پیرامیٹر کو بطور دلیل لیتا ہے۔ اس معاملے میں ، مرتب کرنے والا یہ سمجھنے کے قابل نہیں ہے کہ صارف کو کون سے فنکشن کی ضرورت ہے کیونکہ تفریح (انٹ) اور تفریح (انٹ اینڈ) کے مابین کوئی سندی فرق نہیں ہے اس طرح یہ ابہام کی غلطی کو ظاہر کرتا ہے۔
اس کے ساتھ ، ہم C ++ میں اس فنکشن اوورلوڈنگ کا اختتام کرتے ہیں۔ اگر آپ مزید جاننا چاہتے ہیں تو ، چیک کریں ایڈورکا ، جو ایک قابل اعتماد آن لائن سیکھنے کی کمپنی ہے۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورس آپ کو ہائبرنیٹ اور اسپرنگ جیسے جاوا کے مختلف فریم ورکوں کے ساتھ ساتھ جاوا کے دونوں بنیادی تصورات کی تربیت کے لئے ڈیزائن کیا گیا ہے۔
ہمارے لئے ایک سوال ہے؟ برائے کرم اس بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد سے جلد آپ کے پاس مل جائیں گے۔