کنسٹرکٹر اور ڈسٹرکٹر کے مابین فرق

مصنف: Laura McKinney
تخلیق کی تاریخ: 1 اپریل 2021
تازہ کاری کی تاریخ: 10 مئی 2024
Anonim
D365 FinOps ٹیکنیکل ٹریننگ 09 - SysOperation فریم ورک کا استعمال کرتے ہوئے کیسے ترقی کریں۔
ویڈیو: D365 FinOps ٹیکنیکل ٹریننگ 09 - SysOperation فریم ورک کا استعمال کرتے ہوئے کیسے ترقی کریں۔

مواد


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

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

آئیے ایک موازنہ چارٹ کی مدد سے تعمیر کار اور ڈسٹرکٹر کے مابین کچھ بنیادی اختلافات کا جائزہ لیں

  1. موازنہ چارٹ
  2. تعریف
  3. کلیدی اختلافات
  4. نتیجہ اخذ کرنا

موازنہ چارٹ:

موازنہ کی بنیادتعمیر کنندہتباہ کن
مقصد

یہ کسی چیز کو میموری مختص کرتا ہے۔یہ کسی شے کی یادداشت کو معطل کرتا ہے۔
اعلامیہ کلاس_ نام (دلائل اگر کوئی ہیں) {}؛~ کلاس_ نام (کوئی دلیل نہیں) {}؛
دلائل تعمیر کنندہ دلیل قبول کرتا ہے تباہ کن کوئی دلیل قبول نہیں کرتا ہے۔
کال کرناکنسٹرکٹر کو خود بخود کہا جاتا ہے ، جبکہ آبجیکٹ تخلیق ہوتی ہے۔ڈسٹریکٹر کو خود بخود کہا جاتا ہے ، کیونکہ بلاک سے باہر نکل جاتا ہے یا پروگرام ختم ہوتا ہے۔
کام کرناکنسٹرکٹر کسی چیز کو اس سے پہلے اپنی قدر میں سے کچھ شروع کرنے کی اجازت دیتا ہے ، استعمال ہوتا ہے۔ڈسٹرکٹر کسی چیز کو اپنی تباہی کے وقت کچھ کوڈ پر عمل درآمد کرنے دیتا ہے۔
پھانسی کا حکم

کنسٹرکٹر کو پے درپے ترتیب میں بلایا جاتا ہے۔
ڈسٹرکٹر کو تعمیری کے الٹ ترتیب میں کہا جاتا ہے۔
تعداد میں کلاس میں ایک سے زیادہ کنسٹرکٹر ہوسکتے ہیں۔کلاس میں ہمیشہ ایک ہی ڈسٹریکٹر ہوتا ہے۔
کاپی کرنے والا کاپی کنسٹرکٹر کسی تعمیر کو کسی دوسرے شے سے کسی چیز کا اعلان اور ابتدا کرنے کی اجازت دیتا ہے۔ایسا کوئی تصور نہیں۔
اوور لوڈنگ تعمیر کاروں کو زیادہ بوجھ دیا جاسکتا ہے۔ڈسٹرکٹر کو زیادہ بوجھ نہیں دیا جاسکتا۔


کنسٹرکٹر کی تعریف:

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

کلاس میں ایک سے زیادہ کنسٹرکٹر ہوسکتے ہیں۔ منظور شدہ دلائل کی تعداد اور اس کی بنیاد پر ان کی شناخت کی جاسکتی ہے۔ اگر کلاس میں ایک سے زیادہ کنسٹرکٹر موجود ہیں۔ ان کے ساتھ ضمیمہ تعمیر کنندہ (کچھ نہیں کرنے والا کنسٹرکٹر) بھی بیان کیا جانا چاہئے۔ اس کے علاوہ کچھ نہیں کرتا ، مرتب کرنے والے کو مطمئن کرتا ہے۔

تعمیر کاروں کو بھی پہلے سے طے شدہ دلائل سے تعبیر کیا جاسکتا ہے۔ جبکہ وہ "متحرک طور پر" آبجیکٹ کا آغاز بھی کرتے ہیں۔ تعمیر کرنے والوں کو نہ تو وراثت مل سکتی ہے ، اور نہ ہی یہ مجازی ہوسکتا ہے لیکن ، انھیں زیادہ بوجھ بھی دیا جاسکتا ہے۔ ان کو ان کے پتے پر بھیجا نہیں جاسکتا۔


تعمیر کنندگان کی اقسام

بنیادی طور پر تین طرح کے تعمیر کنندگان ہیں- ڈیفالٹ ، پیرامیٹرائزڈ ، اور کاپی کنسٹرکٹر۔

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

کنسٹرکٹر کا نفاذ:

کلاس کانسٹ {انٹ اے ، بی؛ عوامی: کانسٹ () // پیرامیٹر کے بغیر تعمیر کنندہ {a = 0؛ b = 0؛ } Const (int c، int d) {// پیرامیٹر کے ساتھ تعمیر کنندہ a = c؛ c = d؛ }}؛ int main () {Const C1؛ سی 2 (10،20)؛ // یہ بیان تعمیر کنندہ کی درخواست کرتا ہے}

جب C1 کوئی ایسا کنسٹرکٹر بنایا گیا ہے جس میں کوئی پیرامیٹر نہ ہو ، اس پر عمل درآمد ہوجائے گا ، کیونکہ C1 کوئی پیرامیٹر پاس نہیں کرتا ہے۔ جب کہ ، جب C2 تیار کیا جاتا ہے تو ایک پیرسٹر کے ساتھ ایک کنسٹرکٹر پر عمل درآمد ہو جاتا ہے ، کیونکہ یہ کنسٹرکٹر کو دو عددی گزر رہا ہے۔

تباہ کن کی تعریف:

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

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

ڈسٹرکٹر کا نفاذ:

کلاس کانسٹ {انٹ اے ، بی؛ عوامی: Const (int c، int d) // پیرامیٹر کے ساتھ تعمیر کنندہ۔ {a = c؛ c = d؛ cout << "a اور b کی قدر" <ہے<>

جب C1 آبجیکٹ تیار ہوجاتی ہے تو ، دو پیرامیٹرز کے ساتھ ایک کنسٹرکٹر کو انٹیگریٹ ٹائپ کیا جاتا ہے اور ممبر "a، b" انیشیلش ہوجاتا ہے اور “a، b” کی ویلیو ایڈ ہوجاتی ہے۔ اس کے بعد ڈسٹرکٹر کو طلب کیا جاتا ہے اور "آبجیکٹ C1 تباہ ہوجاتا ہے"۔

ڈسٹرکٹر کی ضرورت ہے

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

  1. کنسٹرکٹر کا بنیادی مقصد یہ ہوتا ہے کہ وہ تخلیق ہونے کے وقت میموری کو مختص کریں۔ اس کے برخلاف ، کسی ڈسٹرکٹور کا بنیادی مقصد جب چیز کو ختم ہوجاتا ہے تو اسے ختم کرنا ہوتا ہے۔
  2. کنسٹرکٹر کو دلائل قبول کرنے کی اجازت ہے کیونکہ کلاس کے ڈیٹا ممبروں کو ابتدا کرنے کے لئے دلائل استعمال کیے جاسکتے ہیں۔ دوسری طرف ، ایک تباہ کن کسی بھی دلائل کو قبول نہیں کرتا ہے کیونکہ اس کا واحد کام شے کی یادداشت کو ختم کرنا ہے۔
  3. جب کوئی شے تیار کی جاتی ہے تو کنسٹرکٹر کہا جاتا ہے۔ اس کے برعکس ، جب پروگرام ختم ہوجاتا ہے یا پروگرام اس بلاک سے باہر نکلتا ہے جس میں کوئی شے تیار کی جاتی ہے تو اس کو ڈسٹرکٹر کہا جاتا ہے۔
  4. کلاس کے عمومی اعداد و شمار کے ممبروں کو ابتدا کرنے کے لئے عام طور پر ایک کنسٹرکٹر استعمال کیا جاتا ہے ، جبکہ اس کے تباہ ہونے سے پہلے اس کو کچھ عمل کرنے دیتا ہے۔
  5. کنسٹرکٹرز کو پے درپے ترتیب سے پھانسی دی جاتی ہے اس کا مطلب ہے کہ اگر کوئی مشتق طبقہ ہے جو بیس کلاس کو وراثت میں ملتا ہے اور اخذ کردہ کلاس کا مقصد پیدا ہوتا ہے تو وہ پہلے بیس کلاس کے کنسٹرکٹر اور پھر اخذ کلاس کے کنسٹرکٹر کہے گا۔ اس کے برعکس ، اخذ کردہ کلاس کے ڈسٹرکٹر کو پہلے کہا جاتا ہے اور پھر بیس کلاس کا مطلب یہ ہے کہ ڈسٹرکٹر کو تعمیری کام کے الٹ ترتیب میں پھانسی دی جاتی ہے۔
  6. کلاس میں ، متعدد کنسٹرکٹر ہوسکتے ہیں جن کی شناخت نمبر دلائل کے ذریعہ ہوتی ہے جبکہ اس میں صرف ایک ڈسٹرکٹر ہوسکتا ہے۔
  7. کاپی کنسٹرکٹر کا تصور موجود ہے جس کی وجہ سے کسی چیز کو کسی دوسری شے سے ابتداء کی اجازت ملتی ہے جبکہ ڈسٹرکٹر کا اس طرح کا کوئی تصور نہیں ہوتا ہے۔
  8. کنسٹرکٹر ایک ہی کنسٹرکٹر کے نام سے مختلف کارروائی کرنے کے ل over اوورلوڈ ہوسکتے ہیں۔ اس کے برعکس ، تباہ کنوں کو زیادہ بوجھ نہیں دیا جاسکتا۔

نتیجہ:

مماثلت کے علاوہ ، یہ کہ ڈسٹرکٹر اور ڈسٹرکٹر ایک کلاس کا خاص ممبر فنکشن ہوتا ہے اور ایک ہی نام کے مالک ہوتا ہے ، ان دونوں میں لازمی فرق یہ ہوتا ہے ، 'کنسٹرکٹر' میموری کی تقسیم کے وقت کہا جاتا ہے اور ڈسٹرکٹر کو بلایا جاتا ہے اشیاء میموری کی کمی کا وقت. دونوں کنسٹرکٹر اور ڈسٹرکٹر واضح طور پر مرتب کے ذریعہ کال کیے جاتے ہیں حالانکہ ان کی کلاس میں تعریف نہیں ہوتی ہے۔