C ++ نام کی جگہ۔

C Namespace



C ++ میں نام کی جگہ ایک عام دائرہ کار ہے۔ اس کا اعلان مخصوص لفظ ، نام کی جگہ سے شروع ہوتا ہے ، اس کے بعد پروگرامر کی پسند کا نام ، اور پھر منحنی خطوط وحدانی میں بلاک۔ بلاک میں بنیادی اعلانات اور/یا C ++ اشیاء ، افعال اور دیگر اداروں کی تعریفیں شامل ہیں۔

مندرجہ ذیل پروگرام میں عالمی دائرہ کار میں درج ذیل دو اسکیلر بیانات پر غور کریں:







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

intvarId= ؛
تیرناvarId= 2.3۔؛

intمرکزی()
{

واپسی ؛
}

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



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

نام کی جگہ NA
{
intvarId= ؛
}

نام کی جگہ NB
{
تیرناvarId= 2.3۔؛
}

intمرکزی()
{
لاگت<<N / A::varId << 'n'؛
لاگت<<NB::varId << 'n'؛

واپسی ؛
}

پیداوار مندرجہ ذیل ہے:




2.3۔

مذکورہ پروگرام میں دو نام کی جگہیں ہیں: N / A ، جس میں ایک عدد کی تعریف ہے ، اور NB ، جس میں فلوٹ کی تعریف ہے لیکن اسی نام کے ساتھ این اے کے عدد کے ساتھ۔ آخر میں ، جب پروگرام چلایا گیا ، دو مختلف متغیرات کے لیے ایک ہی نام استعمال کیا گیا۔ نوٹ کریں کہ دو مختلف متغیرات کے ایک ہی نام تک رسائی حاصل کرنے کے لیے ، نام کی جگہ کے لیے خاص نام استعمال کرنا ضروری ہے ، اس کے بعد مشترکہ شناخت کنندہ۔ نام کی جگہ کا نام اور عام شناخت کنندہ دائرہ کار ریزولوشن آپریٹر کے ذریعہ الگ ہوتے ہیں ، :: . نام کی جگہوں کا نام اشیاء میں فرق کرے گا۔





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

مضمون کا مواد۔

ایک نام کی جگہ کیا ہے؟

ایک اعلانیہ علاقہ ایک پروگرام کا سب سے بڑا حصہ ہے جس میں کسی ہستی (متغیر) کا نام درست ہے۔ اس خطے کو دائرہ کار کہا جاتا ہے۔ C ++ میں ایک نام کی جگہ ایک عام گنجائش ہے جس کا بنیادی مقصد نام کے تنازعات کو حل کرنا ہے۔ نام کی جگہ میں بنیادی اعلانات اور/یا اداروں کی تعریفیں ہوتی ہیں۔



عالمی نام کی جگہ اور اس کا مسئلہ

عالمی نام کی جگہ عالمی دائرہ کار ہے۔ مندرجہ ذیل مختصر پروگرام پر غور کریں:

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

intشناخت= 55۔؛
تیرناشناخت= 12.17۔؛

intمرکزی()
{

واپسی ؛
}

مذکورہ پروگرام میں ، دو متغیرات ہیں ، دونوں کو کہا جاتا ہے۔ شناخت . یہ متغیر عالمی دائرہ کار میں ہیں یعنی وہ عالمی نام کی جگہ پر ہیں۔ اس پروگرام کو مرتب کرنے کی کوشش غلطی کے پیغام کے ساتھ ناکام ہو جائے گی۔ عالمی دائرہ کار ایک ہی نام کے ساتھ ایک سے زیادہ متغیرات کو قبول نہیں کرتا ، اس لیے حسب ضرورت نام کی جگہ کی ضرورت ہے۔

حسب ضرورت نام کی جگہ۔

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

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

نام کی جگہ NA
{
intمختلف= ؛
تیرناflt؛
}

نام کی جگہ NB
{
intمختلف= ؛
تیرناflt؛
}

intمرکزی()
{
لاگت<<N / A::مختلف << 'n'؛
لاگت<<NB::مختلف << 'n'؛
N / A::flt = 2.5؛
NB::flt = 4.8۔؛
لاگت<<N / A::flt << 'n'؛
لاگت<<NB::flt << 'n'؛

واپسی ؛
}

پیداوار یہ ہے:



2.5
4.8۔

نوٹ کریں کہ نام۔ NA :: flt اور NB :: flt بالآخر میں وضاحت کی گئی ہے مرکزی() فنکشن C ++ عالمی دائرہ کار میں ایسی تعریف کی اجازت نہیں دیتا۔

نوٹ کریں کہ کسٹم نام کی جگہ عالمی نام کی جگہ کے لیے ایک گھریلو نام کی جگہ ہے۔

استعمال کرنے کی ہدایت۔

نام کی جگہ کا اعلان کرنے کے بعد نام کی جگہ ہر وقت ٹائپ کرنے سے بچنے کے لیے ، آپ استعمال کر سکتے ہیں استعمال کرتے ہوئے ہدایت استعمال کرنے کے لیے نحو۔ استعمال کرتے ہوئے ہدایت مندرجہ ذیل ہے:

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

کی استعمال کرتے ہوئے ہدایت ایک پری پروسیسر ہدایت نہیں ہے ، لہذا یہ ایک سیمیکولن ()) کے ساتھ ختم ہوتا ہے۔

مندرجہ ذیل پروگرام کے استعمال کی وضاحت کرتا ہے۔ استعمال کرتے ہوئے ہدایت اور مزید:

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

نام کی جگہ NB
{
intمختلف= ؛
intفنکشن()
{
واپسیمختلف؛
}
}

intfn()
{
نام کی جگہ NB استعمال کرتے ہوئے۔؛
intmyVar2=فنکشن()؛
// دیگر اشیاء اور افعال این بی کی پیروی کرتے ہیں۔
واپسیmyVar2؛
}

intmyVar3=NB::فنکشن()؛

intمرکزی()
{
لاگت<<fn() << '' <<myVar3<< 'n'؛

واپسی ؛
}

اس پروگرام کی پیداوار یہ ہے۔ 7 7۔ . اصطلاح نام کی جگہ NB استعمال کرنا کے آغاز میں رکھا گیا ہے۔ fn () تعریف کی فنک () این بی نام کی جگہ سے اس کے بالکل نیچے بلایا جاتا ہے ، بغیر کسی پیشگی کے۔ نوٹ :: .

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

نام فنک () NB نام کی جگہ سے نیچے نہیں دیکھا جا سکتا۔ fn () تعریف کیونکہ نام کی جگہ NB استعمال کرنا فنکشن دائرہ کار (بلاک) کے اندر رکھا گیا تھا۔ اس شرط کے تحت ، استعمال کرنا۔ فنک () این بی نام اسپیس بلاک (دائرہ کار) کے باہر ، اس سے پہلے ہونا ضروری ہے۔ نوٹ :: ، جیسا کہ مندرجہ ذیل بیان میں ہے:

intmyVar3=NB::فنکشن()؛

کی استعمال کرتے ہوئے ہدایت اس کے نام کی جگہ کو بیرونی گھونسلے کے نام کی جگہ کے ساتھ اس پوزیشن سے جوڑتی ہے جہاں اسے بیرونی گھونسلے کے نام کی جگہ کے اختتام پر رکھا جاتا ہے۔ مندرجہ ذیل پروگرام میں ، NA نام کی جگہ عالمی نام کی جگہ کے ساتھ شامل ہو گئی ہے۔ دونوں نام کی جگہیں پھر توسیع کرتی ہیں fn () فنکشن کی تعریف نام کی جگہ ، جس میں وہ NB نام کی جگہ کے ساتھ شامل ہوتے ہیں۔ NB نام کی جگہ کے اختتام پر ختم ہوتی ہے۔ fn () فنکشن کی تعریف ، اور دو پچھلے نام کی جگہیں فائل کے اختتام تک جاری رہتی ہیں (کوڈ کے ذریعے پڑھیں)۔

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

نام کی جگہ NA
{
intمختلف= ؛
intفنکشن()
{
واپسیمختلف؛
}

}

نام کی جگہ NB
{
intمختلف= ؛
intفنکشن()
{
واپسیمختلف؛
}
}

نام کی جگہ NA استعمال کرتے ہوئے۔؛
intmyVar0=مختلف؛
// دیگر اشیاء اور افعال :: اور NB کی پیروی کرتے ہیں۔

intfn()
{
intmyVar1=مختلف؛
نام کی جگہ NB استعمال کرتے ہوئے۔؛
intmyVar2=NB::فنکشن()؛
// NB سے دیگر اشیاء اور افعال اس دائرہ کار کے اختتام تک پیروی کرتے ہیں۔
واپسیmyVar1+myVar2؛
}

// صرف اشیاء اور افعال :: اور NB کی پیروی کرتے ہیں۔

intmyVar3=NB::فنکشن()؛

intمرکزی()
{
لاگت<<myVar0<< '' <<fn() << '' <<myVar3<< 'n'؛

واپسی ؛
}

آؤٹ پٹ ہے۔ 6 ، 13 ، 7۔ .

نوٹ: عالمی نام کی جگہ کے ساتھ اشارہ کیا گیا ہے۔ :: ، اس کا مطلب یہ ہے کہ اسکوپ ریزولوشن آپریٹر کے سامنے کچھ نہیں ہے جو اس کے بعد ہے۔

بیان کے نیچے ، نام کی جگہ NA کا استعمال کرتے ہوئے عالمی اور این اے نام کی جگہوں کے متغیرات کو ان کے ماخذ نام کی جگہ کے اشارے کے بغیر استعمال کیا جاسکتا ہے۔ اگلا بیان استعمال کرتا ہے مختلف این اے کے نام کی جگہ. عالمی اور این اے مشترکہ نام کی جگہ خطے میں پھیلا ہوا ہے۔ fn () فنکشن نام کی جگہ تو ، مختلف میں پہلے بیان کی fn () فنکشن اسکوپ ، این اے نام کی جگہ کا ہے۔

چونکہ عالمی اور این اے نام کی جگہوں کا علاقہ پوری دنیا میں پھیلا ہوا ہے۔ fn () دائرہ کار ، کے بعد int myVar2 = NB :: func () ، NB نام کی جگہ سے کوئی بھی نام صرف میں استعمال کیا جا سکتا ہے۔ fn () اس سے پہلے کے بغیر دائرہ کار۔ نوٹ :: ، صرف اس صورت میں جب یہ NA اور عالمی نام کی جگہوں (بلاکس) میں نہ ہو۔ بصورت دیگر ، اس سے پہلے ہونا چاہیے۔ نوٹ :: . این اے اور گلوبل کے مشترکہ نام کی جگہوں کا علاقہ نیچے جاری ہے۔ fn () تعریف اور میں مرکزی() فائل کے اختتام تک کام کریں۔

NB نام کی جگہ کی توسیع سے شروع ہوتی ہے۔ int myVar2 = NB :: func () میں fn () بلاک اور کے اختتام پر ختم ہوتا ہے۔ fn () تعریف بلاک.

نوٹ: نام کی جگہیں جن کے علاقے شامل ہیں ان کے مختلف ناموں کے بلاکس میں ایک ہی متغیر نام نہیں ہونا چاہیے ، کیونکہ یہ اب بھی تنازعہ کا باعث بنے گا۔

نام کی جگہ کے علاقے

نام کی جگہ ایک دائرہ کار ہے۔ عالمی نام کی جگہ (عالمی دائرہ کار) کے علاوہ ، کسی بھی نام کی جگہ کو بلاک میں قرار دیا جانا چاہیے۔ یہ بلاک نام کی جگہ کے ممکنہ طور پر تقسیم شدہ علاقوں کا پہلا حصہ ہے۔ استعمال کرنے کی ہدایت کے ساتھ ، نام کی جگہ کو دیگر دائروں کے علاقوں کے طور پر بڑھایا جا سکتا ہے۔

ایک نام کی جگہ میں اعلان کردہ اداروں کو نام کی جگہ کا رکن کہا جاتا ہے ، اور ان اعلانات کے ذریعہ ناموں کے اعلاناتی علاقے میں متعارف کرائے گئے ناموں کو نام کی جگہ کے ممبر نام کہا جاتا ہے۔

گھریلو نام کی جگہیں۔

مندرجہ ذیل پروگرام گھریلو نام کی جگہیں دکھاتا ہے:

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

نام کی جگہ A
{
intمیں= ؛
نام کی جگہ B
{
intمیں= ؛
نام کی جگہ C
{
intمیں= ؛
}
}
}

intمرکزی()
{
لاگت<<TO::میں << '' <<TO::ب۔::میں << '' <<TO::ب۔::ج۔::میں << 'n'؛

واپسی ؛
}

پیداوار یہ ہے:

1 2 3۔

نوٹس کریں کہ تین اقدار تک رسائی دائرہ کار ریزولوشن آپریٹر کا استعمال کرتے ہوئے کی گئی ہے۔

معیاری نام کی جگہ۔

C ++ کی ایک لائبریری ہے جسے معیاری لائبریری کہا جاتا ہے۔ اس لائبریری میں موجود اشیاء ، افعال اور دیگر اداروں کے نام ایک نام کی جگہ سے ہیں جسے معیاری نام کی جگہ کہتے ہیں ، گھنٹے . معیاری لائبریری ذیلی لائبریریوں پر مشتمل ہے ، اور ان میں سے ایک ذیلی لائبریری ہے۔ iostream . کی iostream لائبریری آبجیکٹ پر مشتمل ہے۔ لاگت ، جو کنسول (ٹرمینل) پر نتائج بھیجنے کے لیے استعمال ہوتا ہے۔

نام لاگت میں ہونا ضروری ہے گھنٹے نام کی جگہ استمال کے لیے iostream اس کے ساتھ گھنٹے نام کی جگہ ، پروگرام مندرجہ ذیل ہونا چاہئے:

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

کے استعمال کو نوٹ کریں۔ استعمال کرتے ہوئے ہدایت اور گھنٹے . اصطلاح #شامل کریں ایک پری پروسیسر ہدایت ہے اور ایک سیمیکولن کے ساتھ ختم نہیں ہوتی ہے۔ اس میں اس کی ہدایت کے مقام پر iostream فائل شامل ہے۔

نتیجہ

نام کی جگہ ایک دائرہ کار ہے۔ نام کی جگہ کی تفصیل (تعریف) میں بنیادی اعلانات اور/یا C ++ اشیاء ، افعال اور دیگر اداروں کی تعریفیں شامل ہیں۔ نام کی جگہ کی تعریف سے باہر ، نحو کے ساتھ نام تک رسائی حاصل کی جا سکتی ہے ، namespaceName :: name . عالمی نام کی جگہ (عالمی دائرہ کار) کے علاوہ ، کسی بھی نام کی جگہ کو بلاک میں قرار دیا جانا چاہیے۔ یہ بلاک نام کی جگہ کے ممکنہ طور پر تقسیم شدہ علاقوں کا پہلا حصہ ہے۔ کے ساتہ استعمال کرتے ہوئے ہدایت کے مطابق ، نام کی جگہ کو دیگر دائرہ کاروں کے علاقوں کے طور پر بڑھایا جا سکتا ہے۔ نام کی جگہیں جن کے علاقے شامل ہیں ان کے مختلف ناموں کے بلاکس میں ایک ہی متغیر نام نہیں ہونا چاہئے ، کیونکہ یہ اب بھی نام کے تنازعہ کا سبب بنے گا۔

کریس