C ++ میں ورچوئل فنکشن کو کیسے نافذ کریں؟



یہ مضمون آپ کو ایک اور پروگرامنگ تصور سے آگاہ کرے گا جو C ++ میں ورچوئل فنکشن ہے۔ مظاہرے کے ذریعے اس تصور کی تائید کی جائے گی۔

میں ایک مجازی تقریب سی ++ بیس کلاس کے اندر ایک ممبر فنکشن ہوتا ہے جسے ہم اخذ کردہ کلاس میں ڈیفائن کرتے ہیں۔ یہ مضمون آپ کو تصور کو تفصیل سے دریافت کرنے میں مدد کرے گا۔ اس مضمون میں مندرجہ ذیل اشارے کا احاطہ کیا جائے گا ،

تو آئیے ، C ++ میں ورچوئل فنکشن سے متعلق اس مضمون کے ساتھ شروعات کریں





ورچوئل فنکشن کیا ہے؟

ایک ورچوئل فنکشن بیس کلاس کے اندر ایک ممبر فنکشن ہوتا ہے جسے ہم اخذ کردہ کلاس میں ڈیفائن کرتے ہیں۔ یہ مجازی مطلوبہ الفاظ کے استعمال سے اعلان کیا گیا ہے۔ جب ورچوئل فنکشن پر مشتمل کلاس وراثت میں مل جاتی ہے ، اخذ کردہ کلاس اپنی ضروریات کو پورا کرنے کے لئے ورچوئل فنکشن کی نئی وضاحت کرتا ہے۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں



C ++ میں ورچوئل فنکشن کے قواعد:

  • ان کی ہمیشہ بیس کلاس میں تعریف ہوتی ہے اور اخذ شدہ کلاس میں اس کو اوور رائڈ کیا جاتا ہے لیکن اخذ شدہ کلاس میں اوور رائیڈ کرنا لازمی نہیں ہے۔
  • ورچوئل افعال کو کلاس کے عوامی حصے میں اعلان کرنا ضروری ہے۔
  • وہ جامد نہیں ہوسکتے ہیں یا دوست کا فنکشن بھی کسی دوسرے کلاس کا ورچوئل فنکشن نہیں ہوسکتا ہے۔
  • رن ٹائم پولیمورفزم حاصل کرنے کے لئے ایک پوائنٹر کا استعمال کرکے ورچوئل فنکشنز تک رسائی حاصل کی جانی چاہئے۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں۔

پابند کیا ہے؟

افعال کے پابند ہونے کا مطلب یہ ہے کہ جہاں بھی کوئی فنکشن کال ہو ، مرتب کرنے والے کو یہ جاننے کی ضرورت ہوتی ہے کہ اسے کون سے فنکشن کی تعریف سے مماثل ہونا چاہئے۔ اس کا انحصار ہر تقریب کے اعلامیہ اور لیئے گئے اسائنمنٹس پر ہوتا ہے۔ نیز ، مرتب کرنے والے کو یہ جاننے کی ضرورت ہے کہ جب فنکشن کال اور صحیح تعریف کے انتخاب کے مابین یہ ملاپ ہوجائے گی۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں



ابتدائی پابند

ابتدائی پابند کرنا ایک ایسا رجحان ہے جس میں متعدد فنکشن کالز سے ملنے کا فیصلہ مرتب وقت خود ہوتا ہے اور مرتب براہ راست لنک کو پتوں کے ساتھ جوڑتا ہے۔ یہ جامد پابند یا مرتب وقت پابند کے نام سے بھی جانا جاتا ہے۔

  • جیسا کہ ہم جانتے ہیں کہ ہم اعلی سطح کی زبان میں کوڈ لکھتے ہیں
  • پھر مرتب کرنے والا اسے کم سطح کی زبان میں تبدیل کرتا ہے جسے کمپیوٹر سمجھ سکتا ہے ، زیادہ تر مشین کی تالیف کے وقت
  • ابتدائی پابندی میں ، مرتب براہ راست فنکشن کال انسٹرکشن کو فنکشن اعلامیہ ہدایت کا پتہ فراہم کرتا ہے
  • اس طرح جیسا کہ نام سے پتہ چلتا ہے کہ پابندگی پروگرام چلنے سے بہت پہلے ہوتی ہے۔

مثال

# نام کی جگہ ایس ٹی ڈی کلاس جانوروں {عوام کا استعمال کرتے ہوئے شامل کریں: باطل آواز () {cout<< 'Genric animal sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cat meow' <آواز () // ابتدائی پابند واپسی 0}

آؤٹ پٹ

آؤٹ پٹ - سی ++ میں ایڈچیرکا میں ورچوئل فنکشن

وضاحتیں آئن
اس مثال میں ، ہم نے پیرنٹ کلاس جانوروں کے لئے ایک پوائنٹر بنایا۔ پھر ایک = اور سی لکھ کر ، پوائنٹر نے 'اے' نے کلاس بلیوں کے آبجیکٹ سی کا حوالہ دینا شروع کیا۔
a -> آواز () - فنکشن کو آواز دینے پر () جو دونوں ہی کلاس میں پوائنٹر 'اے' کے ذریعہ موجود ہے ، والدین کی کلاس کا فنکشن بلایا گیا ، یہاں تک کہ اگر پوائنٹر کلاس بلیوں کے مقصد کا حوالہ دے رہا ہو۔ .

سٹرنگ کو سرنی پی ایچ پی میں تبدیل کریں

یہ ارلی بائنڈنگ کی وجہ سے ہے۔ ہم جانتے ہیں کہ ‘a’ والدین کی کلاس کا ایک اشارہ ہے جو چلڈرن کلاس کے اعتراض کا حوالہ دیتا ہے۔ چونکہ ابتدائی پابند مرتب وقت پر ہوتا ہے ، لہذا جب مرتب کرنے والے نے دیکھا کہ 'a' والدین کی کلاس کا ایک نکتہ ہے ، تو اس نے اس مقصد کو تلاش کرنے کے بغیر والدین کی کلاس کے 'آواز ()' فنکشن کے ساتھ کال کا میچ کیا۔ کا حوالہ دے رہا ہے۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں

دیر سے پابند

دیر سے بائنڈنگ میں ، مرتب کرنے والا رن ٹائم کے وقت آبجیکٹ کی نشاندہی کرتا ہے اور پھر صحیح فنکشن کے ساتھ فنکشن کال سے میل کھاتا ہے۔ اسے متحرک بائنڈنگ یا رن ٹائم بائنڈنگ کے نام سے بھی جانا جاتا ہے۔

مندرجہ بالا دشواری میں دیر سے بائنڈنگ کو بیس کلاس میں ورچوئل کیورڈ کا استعمال کرکے حل کیا جاسکتا ہے۔ آئیے دیکھتے ہیں کہ یہ کیسے ہوتا ہے اوپر کی مثال کے طور پر خود ، لیکن صرف ورچوئل کی ورڈ شامل کرکے۔

مثال

جاوا میں ایم وی سی کیا ہے؟
# نام کی جگہ ایس ٹی ڈی کلاس جانوروں {عوام کا استعمال کرتے ہوئے شامل کریں: ورچوئل باطل آواز () out cout<< 'Genric aniaml sound' << endl } } class Cats: public Animals { public: void sound() { cout << 'Cats meow' <آواز () 0} واپس

آؤٹ پٹ

وضاحت
یہاں بیس کلاس کی فنکشن ساؤنڈ () کو ورچوئل بنایا گیا ہے ، اس طرح اب یہ کام کرنے والا مرتب اس کام کے لئے دیر سے پابند انجام دیتا ہے۔ اب ، آواز کے فنکشن کال () فنکشن کا مقابلہ رن ٹائم کے وقت فنکشن کی تعریف کے ساتھ کیا جائے گا۔ چونکہ اب یہ مرتب کرنے والا اشارہ ‘a’ کی شناخت بطور مشتق کلاس بلیوں کے آبجیکٹ ‘c’ کی حیثیت رکھتا ہے ، لہذا یہ کلاس کیٹس کی آواز () کی تقریب کو آواز دے گا۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں

خالص ورچوئل فنکشن

C ++ میں خالص ورچوئل فنکشن ایک مجازی فنکشن ہے جس کے لئے ہمارے پاس عمل درآمد نہیں ہوتا ، ہم صرف اسے اعلان کرتے ہیں۔ اعلامیہ میں 0 تفویض کرکے ایک خالص ورچوئل فنکشن کا اعلان کیا جاتا ہے۔

ورچوئل باطل آواز () = 0

یہاں آواز () ایک خالص ورچوئل فکشن ہے۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں

خلاصہ کلاس

ایک خلاصہ کلاس کی تعریف ایک کلاس کے طور پر کی جاتی ہے جس میں ایک یا زیادہ خالص ورچوئل افعال ہوتے ہیں۔ جیسا کہ اوپر بیان کیا گیا ہے خالص ورچوئل فنکشن ایک ورچوئل ممبر فنکشن ہے جسے نشان زد کیا گیا ہے جس پر عمل درآمد نہیں ہوتا ہے۔ کلاس میں فراہم کردہ معلومات کے ساتھ اس کا کوئی عمل درآمد ممکن نہیں ہے ، بشمول کسی بھی بیس کلاسوں کو۔ ایک تجریدی کلاس کو ایک تجریدی بنیاد طبقے کے نام سے بھی جانا جاتا ہے۔

مثال

# نام کی جگہ ایس ٹی ڈی کلاس کے ملازم کو شامل کریں // خلاصہ بیس کلاس {ورچوئل انٹ گیٹ سیلری () = 0 // خالص ورچوئل فنکشن} کلاس ایمپلائیو: عوامی ملازم {مکمل تنخواہ پبلک: ایمپلائ_ (ایس ٹی) {تنخواہ = ایس} انٹ گاسسلری () {واپسی تنخواہ}} کلاس ملازم 3: سرکاری ملازم {INT تنخواہ عوام: ملازم 2 (INT t) {تنخواہ = t} int getSalary () {واپسی کی تنخواہ}} INT اہم () {ملازم_ ای 1 (5000) ملازم 2 ای 2 (3000) انٹ a، ba = e1.getSalary () b = e2.getSalary () cout<< 'Salary of Developer : ' << a << endl cout << 'Salary of Driver : ' << b << endl return 0 } 

آؤٹ پٹ

وضاحت
کلاس ملازم میں 'getSalary ()' فنکشن خالص ورچوئل فنکشن ہے۔ چونکہ ملازم کلاس خالص ورچوئل فنکشن پر مشتمل ہے ، لہذا یہ ایک تجریدی بیس کلاس ہے۔
چونکہ خالص ورچوئل فنکشن کی وضاحت ذیلی جماعتوں میں کی گئی ہے ، لہذا فنکشن ‘getSalary ()’ کی وضاحت کلاس ایمپلائیو کلاس کے دونوں ذیلی طبقات میں کی گئی ہے یعنی ملازم_1 اور ملازم 2 میں۔

C ++ میں ورچوئل فنکشن کے بارے میں اس مضمون کے ساتھ آگے بڑھ رہے ہیں

ورچوئل فنکشن کی مثال

# نام کی جگہ ایس ٹی کلاس بیس {عوام کا استعمال شامل کریں: باطل فنکشن_1 () out cout<< 'base class function 1n' } virtual void function_2() { cout << 'base class function 2n' } virtual void function_3() { cout << 'base class function 3n' } virtual void function_4() { cout << 'base class function 4n' } } class derived : public base { public: void function_1() { cout << 'derived class function 1n' } void function_2() { cout << 'derived class function 2n' } void function_4(int x) { cout فنکشن_2 () پی ٹی آر-> فنکشن_3 () پی ٹی آر-> فنکشن_4 ()}

آؤٹ پٹ

فبوناکی سی ++ ریورسیو

وضاحت
فنکشن_1 () فنکشن کال کے لئے ، فنکشن کا بیس کلاس ورژن کہا جاتا ہے ، فنکشن_2 () کو مشتق کلاس میں زیر کیا جاتا ہے لہذا مشتق کلاس ورژن کہا جاتا ہے ، فنکشن 14 () اخذ کردہ کلاس میں اوور رائیڈ نہیں ہوتا ہے اور ورچوئل فنکشن ہوتا ہے لہذا بیس کلاس ورژن کہا جاتا ہے ، اسی طرح فنکشن_4 () کو اوور رائیڈ نہیں کیا جاتا ہے لہذا بیس کلاس ورژن کہا جاتا ہے۔

اس طرح ہم ‘C ++ میں ورچوئل فنکشن’ پر اس مضمون کے اختتام کو پہنچے ہیں۔ اگر آپ مزید جاننا چاہتے ہیں تو ، چیک کریں ایڈورکا ، جو ایک قابل اعتماد آن لائن سیکھنے کی کمپنی ہے۔ ایڈورکا کا جاوا J2EE اور SOA ٹریننگ اور سرٹیفیکیشن کورس آپ کو ہائبرنیٹ اور اسپرنگ جیسے جاوا کے مختلف فریم ورکوں کے ساتھ ساتھ جاوا کے دونوں بنیادی تصورات کی تربیت کے لئے ڈیزائن کیا گیا ہے۔

ہمارے لئے ایک سوال ہے؟ برائے کرم اس بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد سے جلد آپ کے پاس مل جائیں گے۔