C ++ کلاس کنسٹرکٹر۔

C Class Constructors



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

اس آرٹیکل میں ، ہم ان تمام اقسام کے کنسٹرکٹرز پر مثالوں کے ساتھ غور کریں گے۔







مثال 1۔

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



عدد()

{

ایکس=پچاس؛

اور=بیس؛

}؛

اس کنسٹرکٹر میں ، متغیرات کو اقدار تفویض کی جاتی ہیں۔ اگر ہم اقدار کو آؤٹ پٹ کے طور پر لانا چاہتے ہیں تو ہمیں انہیں مرکزی پروگرام میں پرنٹ کرنا ہوگا۔







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

ہم اوبنٹو میں ٹرمینل سے سورس کوڈ کی پیداوار دیکھ سکتے ہیں۔ آؤٹ پٹ حاصل کرنے کے لیے استعمال کیا جانے والا نقطہ نظر کافی آسان ہے۔ سب سے پہلے کوڈ مرتب کیا جاتا ہے ، اور پھر اس پر عمل کیا جاتا ہے۔ ہم تالیف کے عمل کے لیے G ++ مرتب استعمال کرتے ہیں۔ جیسا کہ C کے معاملے میں ، ہم GCC استعمال کرتے ہیں۔



$ جی++۔ -یا filec filec.ج

./فائل سی

-O فائل میں آؤٹ پٹ کو محفوظ کرنے کے لیے استعمال کیا جاتا ہے۔

مثال 2۔

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

  • یہ مختلف متغیرات کو مختلف اقدار کے ساتھ تعمیر کرنے والوں کے اندر شروع کرنے کے لیے استعمال کیا جاتا ہے۔
  • یہ کنسٹرکٹر اوورلوڈنگ میں استعمال ہوتا ہے۔ اس کی وضاحت بعد میں مضمون میں کی گئی ہے۔

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

عدد( intایکس،intاور)

{

TO=ایکس؛

ب۔=اور؛

}؛

پچھلی مثال میں ، کنسٹرکٹر کے اندر متغیرات کو اقدار دی گئیں۔ جبکہ اس کنسٹرکٹر میں ، متغیرات کو متغیرات کے ساتھ تفویض کیا جاتا ہے جس کی قیمت ہوتی ہے۔

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

intgetX()

{

واپسیکو؛

}؛

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

عدد v(70۔،55۔)؛ {مضمر}

عدد v=عدد(10۔،پندرہ)؛ {واضح}

اور نتیجہ ظاہر کرنے کے لیے ، ہم اعتراض کے استعمال سے کلاس کے اندر بنائے گئے افعال کو کال کریں گے۔ یعنی v.getx ()۔

ریکارڈ لانے کا طریقہ وہی ہے جو پہلے متعارف کرایا گیا تھا۔

مثال 3۔

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

دیوار(دیوار&obj)

{

لمبائی=objلمبائی؛

اونچائی۔=objاونچائی؛

}

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

کاپی کنسٹرکٹر کی فنکشن کال اس طرح ہوگی۔

دیوار دیوار 2۔=دیوار 1؛

آبجیکٹ کاپی شدہ کنسٹرکٹر کو کال کرتا ہے ، اور پہلے آبجیکٹ کے ذریعے ڈیٹا اس کے ذریعے کاپی کیا جاتا ہے۔ مزید یہ کہ ، ہم فنکشن کو دونوں اشیاء کے ذریعے رقبے کا حساب لگانے کے لیے کہیں گے۔

آؤٹ پٹ سے ، آپ دیکھ سکتے ہیں کہ دونوں کنسٹرکٹرز کا نتیجہ ایک جیسا ہے۔ اس کا مطلب ہے کہ سارا ڈیٹا آبجیکٹ نے کامیابی کے ساتھ کاپی کیا۔

مثال 4۔

یہ کنسٹرکٹر اوورلوڈنگ کی مثال ہے۔ یہ تب ہوتا ہے جب ہمیں کلاس کے اندر کسی ایک فنکشن سے زیادہ استعمال کرنا پڑے۔ کنسٹرکٹر اوورلوڈنگ پیرامیٹرائزڈ کنسٹرکٹرز کی ہدایات پر عمل کرتا ہے۔ کلاس کے تمام کنسٹرکٹرز کا نام کلاس جیسا ہے۔ لیکن ہر کنسٹرکٹر کو مختلف پیرامیٹرز تفویض کیے گئے ہیں۔ جب ہم آبجیکٹ بناتے ہیں تو ہر کنسٹرکٹر کو دلیل کے مطابق کہا جاتا ہے۔

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

// دو دلائل کے ساتھ کنسٹرکٹر۔

شکل(intایکس،intاور)

{

کو=ایکس؛

ب=اور؛

}؛

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

شکل s؛

شکل s2۔()؛

شکل s3۔(،)؛

وہ فنکشن جس کے ذریعے ہم قدر ظاہر کر سکتے ہیں اسی تخلیق کردہ چیز کے ذریعے کہلاتی ہے۔

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

آؤٹ پٹ سے ، ہم دیکھ سکتے ہیں کہ جواب ہر کنسٹرکٹر کے لیے ایک جیسا ہے۔

نتیجہ

اس ٹیوٹوریل میں ، ہم نے کنسٹرکٹرز کی بنیادی باتیں اور ان کی فعالیت کو دیکھا ہے ، بشمول ان کو اوورلوڈ کرنے کا طریقہ۔ کنسٹرکٹرز کو متغیرات کو اقدار کے ساتھ شروع کرنے کے لیے استعمال کیا جاتا ہے۔