பின்வரும் திட்டத்தில், உலகளாவிய நோக்கத்தில் பின்வரும் இரண்டு அளவிடுதல் அறிக்கைகளைக் கவனியுங்கள்:
#சேர்க்கிறது
நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
intvarId= 5;
மிதக்கvarId= 2.3;
intமுக்கிய()
{
திரும்ப 0;
}
இந்த நிரலை தொகுக்கும் முயற்சி ஒரு தொகுப்பு பிழைக்கு வழிவகுக்கிறது. ஒரே பெயரில் இரண்டு மாறிகள் உள்ளன, varId . அவை இரண்டு வெவ்வேறு வகைகளின் இரண்டு வெவ்வேறு மாறிகள் என்றாலும், int மற்றும் மிதக்க தொகுப்பாளர் இரண்டு அறிவிப்புகளை நிராகரிக்கிறார், ஏனெனில் அவை ஒரே பெயரில் உள்ளன. பின்வரும் நிரல் இந்த பிரச்சனையை ஒரே பெயரில் உள்ள மாறிகளை இரண்டு வெவ்வேறு பொதுமைப்படுத்தப்பட்ட நோக்கங்களில் அறிவிப்பதன் மூலம் தீர்க்கிறது:
#சேர்க்கிறது
நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
பெயர்வெளி NA
{
intvarId= 5;
}
பெயர்வெளி NB
{
மிதக்கvarId= 2.3;
}
intமுக்கிய()
{
செலவு<<என்.ஏ::varId << ' n';
செலவு<<NB::varId << ' n';
திரும்ப 0;
}
வெளியீடு பின்வருமாறு:
5
2.3
மேலே உள்ள திட்டத்தில் இரண்டு பெயர்வெளிகள் உள்ளன: என்.ஏ , இது ஒரு முழு எண்ணின் வரையறையைக் கொண்டுள்ளது, மற்றும் NB , இது ஒரு மிதவைக்கான வரையறையைக் கொண்டுள்ளது ஆனால் NA க்கான முழு எண்ணின் அதே பெயரைக் கொண்டுள்ளது. இறுதியாக, நிரல் இயங்கும் போது, இரண்டு வெவ்வேறு மாறிகளுக்கு ஒரே பெயர் பயன்படுத்தப்பட்டது. இரண்டு வெவ்வேறு மாறிகளின் ஒரே பெயரை அணுகுவதற்கு, பெயர்வெளியின் குறிப்பிட்ட பெயரைப் பயன்படுத்த வேண்டும், அதைத் தொடர்ந்து பொதுவான அடையாளங்காட்டி பயன்படுத்தப்பட வேண்டும். நேம்ஸ்பேஸ் பெயர் மற்றும் பொதுவான அடையாளங்காட்டி நோக்கம் தீர்மானம் ஆபரேட்டரால் பிரிக்கப்படுகின்றன, :: . பெயர்வெளிகளின் பெயர் பொருள்களை வேறுபடுத்தும்.
இந்த கட்டுரை ஒரு பெயர்வெளியின் அடிப்படை கருத்து மற்றும் சி ++ நிரலாக்க மொழியில் அதன் பயன்பாடு ஆகியவற்றை உள்ளடக்கியது. இந்த கட்டுரையைப் பின்தொடர, நீங்கள் சி ++ மொழியின் அடிப்படை அறிவைப் பெற்றிருக்க வேண்டும். இந்த கட்டுரையில் சுருக்கமாக விளக்கப்பட்டுள்ள போதிலும், சி ++ நோக்கம் பற்றிய அறிவும் உங்களுக்கு இருக்க வேண்டும். C ++ நோக்கம் பற்றி மேலும் அறிய, எந்த linuxhint.com வலைப்பக்கத்தின் தேடல் பெட்டியில் C ++ (மேற்கோள்கள் இல்லாமல்) என்ற சொற்றொடரைத் தேடவும் மற்றும் Enter ஐ அழுத்தவும். இந்த ஆசிரியர் எழுதிய கட்டுரைக்கு இது உங்களை வழிநடத்தும்.
கட்டுரை உள்ளடக்கம்
நேம்ஸ்பேஸ் என்றால் என்ன?
ஒரு அறிவிப்பு பகுதி என்பது ஒரு திட்டத்தின் மிகப்பெரிய பகுதியாகும், அதில் ஒரு நிறுவனத்தின் பெயர் (மாறி) செல்லுபடியாகும். இந்த பகுதி ஒரு நோக்கம் என்று அழைக்கப்படுகிறது. C ++ இல் உள்ள ஒரு பெயர்வெளி என்பது ஒரு பொதுவான நோக்கமாகும், இதன் முக்கிய நோக்கம் பெயர் மோதல்களைத் தீர்ப்பதாகும். ஒரு பெயர்வெளியில் அடிப்படை அறிவிப்புகள் மற்றும்/அல்லது நிறுவனங்களின் வரையறைகள் உள்ளன.
உலகளாவிய பெயர்வெளி மற்றும் அதன் பிரச்சனை
உலகளாவிய பெயர்வெளி என்பது உலகளாவிய நோக்கம். பின்வரும் குறுகிய திட்டத்தைக் கவனியுங்கள்:
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
intஅடையாளம்= 55;
மிதக்கஅடையாளம்= 12.17;
intமுக்கிய()
{
திரும்ப 0;
}
மேலே உள்ள நிரலில், இரண்டு மாறிகள் உள்ளன, இரண்டும் அழைக்கப்படுகின்றன அடையாளம் . இந்த மாறிகள் உலக அளவில் உள்ளன; அதாவது, அவை உலகளாவிய பெயர்வெளியில் உள்ளன. இந்த நிரலை தொகுக்கும் முயற்சி பிழை செய்தியுடன் தோல்வியடையும். உலகளாவிய நோக்கம் ஒரே பெயரில் ஒன்றுக்கு மேற்பட்ட மாறிகளை ஏற்காது, எனவே தனிப்பயன் பெயர்வெளியின் தேவை உள்ளது.
தனிப்பயன் பெயர்வெளி
ஒரு பெயர்வெளியில் ஒரே ஒரு பெயர் இல்லை. அதற்கு பதிலாக, ஒரு பெயர்வெளியில் மற்ற பெயர்களுடன் முரண்படுவதைத் தவிர்க்க பெயர்களின் தொகுப்பு உள்ளது. குறியீட்டில் மோதல்களைத் தவிர்க்க, ஒவ்வொரு பெயரையும் நேம்ஸ்பேஸின் பெயருடன் முன் வைக்கவும் :: . பின்வரும் நிரல் இதை இரண்டு தனிப்பயன் பெயர்வெளிகளைப் பயன்படுத்தி விளக்குகிறது:
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
பெயர்வெளி NA
{
intvarInt= 6;
மிதக்கflt;
}
பெயர்வெளி NB
{
intvarInt= 7;
மிதக்கflt;
}
intமுக்கிய()
{
செலவு<<என்.ஏ::varInt << ' n';
செலவு<<NB::varInt << ' n';
என்.ஏ::flt = 2.5;
NB::flt = 4.8;
செலவு<<என்.ஏ::flt << ' n';
செலவு<<NB::flt << ' n';
திரும்ப 0;
}
வெளியீடு:
67
2.5
4.8
பெயர்களைக் கவனியுங்கள் NA :: flt மற்றும் NB :: flt இறுதியில் வரையறுக்கப்பட்டுள்ளது முக்கிய () செயல்பாடு சி ++ உலகளாவிய நோக்கத்தில் அத்தகைய வரையறையை அனுமதிக்காது.
தனிப்பயன் நேம்ஸ்பேஸ் என்பது உலகளாவிய நேம்ஸ்பேஸிற்கான உள்ளமைக்கப்பட்ட நேம்ஸ்பேஸ் என்பதை நினைவில் கொள்க.
உபயோகிக்கும் திசை
பெயர்வெளியை தட்டச்சு செய்வதைத் தவிர்க்க :: பெயர்வெளியை அறிவித்த பிறகு பெயருக்கு பதிலாக எல்லா நேரத்திலும் பெயரிடுங்கள், நீங்கள் இதைப் பயன்படுத்தலாம் பயன்படுத்தி உத்தரவு பயன்படுத்த தொடரியல் பயன்படுத்தி உத்தரவு பின்வருமாறு:
namespace Namespace_name ஐப் பயன்படுத்துதல்;தி பயன்படுத்தி உத்தரவு ஒரு முன் செயலாக்க உத்தரவு அல்ல, எனவே இது ஒரு அரைப்புள்ளியுடன் முடிவடைகிறது (;).
பின்வரும் நிரல் அதன் பயன்பாட்டை விளக்குகிறது பயன்படுத்தி உத்தரவு மற்றும் பல:
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
பெயர்வெளி NB
{
intvarInt= 7;
intசெயல்பாடு()
{
திரும்பvarInt;
}
}
intfn()
{
பெயர்வெளியை NB பயன்படுத்தி;
intmyVar2=செயல்பாடு();
// NB இலிருந்து பிற பொருள்கள் மற்றும் செயல்பாடுகள் பின்வருமாறு.
திரும்பmyVar2;
}
intmyVar3=NB::செயல்பாடு();
intமுக்கிய()
{
செலவு<<fn() << '' <<myVar3<< ' n';
திரும்ப 0;
}
இந்த திட்டத்தின் வெளியீடு 7 7 . கால பெயர்வெளி NB ஐப் பயன்படுத்துதல்; ஆரம்பத்தில் வைக்கப்பட்டுள்ளது fn () வரையறை. தி func () NB பெயர்வெளியில் இருந்து முன்னால் இல்லாமல், அதற்கு கீழே அழைக்கப்படுகிறது NB :: .
உலகளாவிய நோக்கத்தில் அறிவிக்கப்பட்ட ஒரு மாறுபாடு (உலகளாவிய நேம்ஸ்பேஸ்) அறிவிப்பின் புள்ளியில் இருந்து கோப்பின் இறுதி வரை காணப்படுகிறது. இது கூடு கட்டப்பட்ட பெயர் இடங்களிலும் (கூடு கட்டப்பட்ட இடங்கள்) காணப்படுகிறது fn () மேலே செயல்பாட்டு நோக்கம். தி பயன்படுத்தி உத்தரவு அதன் பெயர்வெளியில் அது வைக்கப்படும் நிலையில் இருந்து அது வைக்கப்படும் நோக்கத்தின் இறுதிவரை இணைகிறது.
பெயர் func () NB பெயர்வெளியில் இருந்து கீழே பார்க்க முடியாது fn () வரையறை ஏனெனில் பெயர்வெளி NB ஐப் பயன்படுத்துதல்; செயல்பாட்டு எல்லைக்குள் (தொகுதி) வைக்கப்பட்டது. இந்த நிலையில், பயன்படுத்த func () NB நேம்ஸ்பேஸ் தொகுதிக்கு வெளியே (நோக்கம்), அதற்கு முன்னால் இருக்க வேண்டும் NB :: , பின்வரும் அறிக்கையில் உள்ளது போல:
intmyVar3=NB::செயல்பாடு();தி பயன்படுத்தி டைரக்டிவ் அதன் நேம்ஸ்பேஸை வெளி கூடு கட்டும் நேம்ஸ்பேஸுடன் இணைக்கும் நிலையில் இருந்து வெளி கூடு கட்டும் நேம்ஸ்பேஸின் இறுதி வரை இணைகிறது. பின்வரும் திட்டத்தில், NA நேம்ஸ்பேஸ் உலகளாவிய பெயர்வெளியுடன் இணைக்கப்பட்டுள்ளது. இரண்டு பெயர்வெளிகளும் பின்னர் விரிவடைகின்றன fn () செயல்பாட்டு வரையறை நேம்ஸ்பேஸ், இதில் அவர்கள் NB நேம்ஸ்பேஸுடன் இணைந்துள்ளனர். NB நேம்ஸ்பேஸ் முடிவில் முடிகிறது fn () செயல்பாட்டு வரையறை, மற்றும் இரண்டு முந்தைய பெயர்வெளிகள் கோப்பின் இறுதி வரை தொடரும் (குறியீடு மூலம் படிக்கவும்).
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
பெயர்வெளி NA
{
intvarInt= 6;
intசெயல்பாடு()
{
திரும்பvarInt;
}
}
பெயர்வெளி NB
{
intvarInt= 7;
intசெயல்பாடு()
{
திரும்பvarInt;
}
}
பெயர்வெளி NA ஐப் பயன்படுத்துதல்;
intmyVar0=varInt;
// மற்றும் NB இலிருந்து பிற பொருள்கள் மற்றும் செயல்பாடுகள்.
intfn()
{
intmyVar1=varInt;
பெயர்வெளியை NB பயன்படுத்தி;
intmyVar2=NB::செயல்பாடு();
// இந்த நோக்கத்தின் இறுதி வரை NB இலிருந்து பிற பொருள்கள் மற்றும் செயல்பாடுகள் பின்பற்றப்படுகின்றன.
திரும்பmyVar1+myVar2;
}
// மற்றும் NB இலிருந்து பொருள்கள் மற்றும் செயல்பாடுகள் மட்டுமே பின்பற்றப்படுகின்றன.
intmyVar3=NB::செயல்பாடு();
intமுக்கிய()
{
செலவு<<myVar0<< '' <<fn() << '' <<myVar3<< ' n';
திரும்ப 0;
}
வெளியீடு ஆகும் 6, 13, 7 .
குறிப்பு: உலகளாவிய பெயர்வெளியுடன் குறிப்பிடப்பட்டுள்ளது :: , அதாவது பின் வரும் ஸ்கோப் ரெசல்யூஷன் ஆபரேட்டருக்கு முன் எதுவும் இல்லை.
அறிக்கைக்கு கீழே, தி பெயர்வெளி NA ஐப் பயன்படுத்துதல்; உலகளாவிய மற்றும் NA பெயர்வெளிகளில் இருந்து மாறிகள் அவற்றின் மூலப் பெயர் இடத்தின் அறிகுறி இல்லாமல் பயன்படுத்தப்படலாம். அடுத்த அறிக்கை பயன்படுத்துகிறது varInt என்ஏ பெயர்வெளியின். உலகளாவிய மற்றும் NA இணைந்த பெயர்வெளிப் பகுதி நீண்டுள்ளது fn () செயல்பாடு பெயர்வெளி. அதனால் varInt இல் முதல் அறிக்கையின் fn () செயல்பாட்டு நோக்கம், NA பெயர்வெளியில் உள்ளது.
உலகளாவிய மற்றும் NA பெயர்வெளிகளுக்கான பகுதி முழுவதும் விரிவடைவதால் fn () நோக்கம், பிறகு int myVar2 = NB :: func (); என்பி நேம்ஸ்பேஸில் இருந்து எந்தப் பெயரும் இதில் மட்டுமே பயன்படுத்த முடியும் fn () அதற்கு முன்னால் இல்லாமல் நோக்கம் NB :: , அது NA மற்றும் உலகளாவிய பெயர்வெளிகளில் (தொகுதிகள்) ஏற்படவில்லை என்றால் மட்டுமே. இல்லையெனில், அதற்கு முன்னதாக இருக்க வேண்டும் NB :: . NA மற்றும் உலகளாவிய இணைந்த பெயர்வெளிகளின் பகுதி கீழே உள்ளது fn () வரையறை மற்றும் முக்கிய () கோப்பின் இறுதி வரை செயல்படும்.
என்பி நேம்ஸ்பேஸின் விரிவாக்கம் இதிலிருந்து தொடங்குகிறது int myVar2 = NB :: func (); இல் fn () தடுப்பு மற்றும் முடிவில் முடிகிறது fn () வரையறை தொகுதி.
குறிப்பு: பிராந்தியங்கள் இணைக்கப்பட்ட பெயர்வெளிகள் அவற்றின் வெவ்வேறு பெயர்வெளிகளில் ஒரே மாறக்கூடிய பெயரை கொண்டிருக்கக்கூடாது, ஏனெனில் இது இன்னும் மோதலை ஏற்படுத்தும்.
பெயர்வெளி பகுதிகள்
ஒரு பெயர்வெளி என்பது ஒரு நோக்கம். உலகளாவிய நேம்ஸ்பேஸ் (உலகளாவிய நோக்கம்) தவிர, எந்த பெயர்வெளியும் ஒரு தொகுதியில் அறிவிக்கப்பட வேண்டும். அந்தத் தொகுதி, பெயர்வெளியின் விநியோகிக்கப்பட்ட பகுதிகளின் முதல் பகுதியாகும். உபயோகிக்கும் கட்டளையுடன், பெயர்வெளியை மற்ற பகுதிகளில் உள்ள பகுதிகளாக நீட்டிக்க முடியும்.
ஒரு பெயர்வெளிக் குழுவில் அறிவிக்கப்பட்ட நிறுவனங்கள் பெயர்வெளியின் உறுப்பினர்களாகக் கூறப்படுகின்றன, மேலும் இந்த அறிவிப்புகளால் அறிமுகப்படுத்தப்பட்ட பெயர்கள் பெயர்வெளியின் பிரகடனப் பகுதியில் பெயர் இடத்தின் உறுப்பினர் பெயர்களாகக் கூறப்படுகிறது.
உள்ளமைந்த பெயர்வெளிகள்
பின்வரும் நிரல் உள்ளமைக்கப்பட்ட பெயர்வெளிகளைக் காட்டுகிறது:
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
பெயர்வெளி ஏ
{
intநான்= 1;
பெயர்வெளி பி
{
intநான்= 2;
பெயர்வெளி சி
{
intநான்= 3;
}
}
}
intமுக்கிய()
{
செலவு<<TO::நான் << '' <<TO::பி::நான் << '' <<TO::பி::சி::நான் << ' n';
திரும்ப 0;
}
வெளியீடு:
1 2 3நோக்கம் தீர்மானம் ஆபரேட்டரைப் பயன்படுத்தி மூன்று மதிப்புகள் அணுகப்பட்டுள்ளன என்பதை கவனிக்கவும்.
நிலையான பெயர்வெளி
சி ++ இல் நிலையான நூலகம் என்ற நூலகம் உள்ளது. இந்த நூலகத்தில் உள்ள பொருள்கள், செயல்பாடுகள் மற்றும் பிற நிறுவனங்களின் பெயர்கள் நிலையான பெயர்வெளி என்று அழைக்கப்படும் ஒரு பெயர்வெளியில் இருந்து எழுதப்பட்டவை. மணி . நிலையான நூலகத்தில் துணை நூலகங்கள் உள்ளன, மேலும் இந்த துணை நூலகங்களில் ஒன்று iostream . தி iostream நூலகம் பொருளைக் கொண்டுள்ளது செலவு , இது கன்சோலுக்கு (முனையம்) முடிவுகளை அனுப்ப பயன்படுகிறது.
பெயர் செலவு இல் இருக்க வேண்டும் மணி பெயர்வெளி. உபயோகிக்க iostream அதன் உடன் மணி பெயர்வெளி, நிரல் பின்வருமாறு இருக்க வேண்டும்:
#சேர்க்கிறதுநேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;
இன் பயன்பாட்டைக் கவனியுங்கள் பயன்படுத்தி உத்தரவு மற்றும் மணி . கால #சேர்க்கிறது ஒரு முன் செயலாக்க உத்தரவு மற்றும் அரைப்புள்ளியுடன் முடிவதில்லை. இது அதன் உத்தரவின் நிலையில் iostream கோப்பை உள்ளடக்கியது.
முடிவுரை
ஒரு பெயர்வெளி என்பது ஒரு நோக்கம். நேம்ஸ்பேஸ் விளக்கம் (வரையறை) சி ++ பொருள்கள், செயல்பாடுகள் மற்றும் பிற நிறுவனங்களின் அடிப்படை அறிவிப்புகள் மற்றும்/அல்லது வரையறைகளைக் கொண்டுள்ளது. நேம்ஸ்பேஸ் வரையறைக்கு வெளியே, தொடரியல் மூலம் பெயரை அணுகலாம், namespaceName :: பெயர் . உலகளாவிய நேம்ஸ்பேஸ் (உலகளாவிய நோக்கம்) தவிர, எந்த பெயர்வெளியும் ஒரு தொகுதியில் அறிவிக்கப்பட வேண்டும். அந்தத் தொகுதி, பெயர்வெளியின் விநியோகிக்கப்பட்ட பகுதிகளின் முதல் பகுதியாகும். உடன் பயன்படுத்தி உத்தரவு, பெயரளவை மற்ற நோக்கங்களில் உள்ள பகுதிகளாக நீட்டிக்க முடியும். பிராந்தியங்கள் இணைந்திருக்கும் பெயர்வெளிகள் அவற்றின் வெவ்வேறு பெயர்வெளிகளின் தொகுதிகளில் ஒரே மாறுபட்ட பெயரை கொண்டிருக்கக்கூடாது, ஏனெனில் இது இன்னும் பெயர் மோதலை ஏற்படுத்தும்.
கிறைஸ்