சி ++ தனித்துவமான_பிடிஆர் பயன்பாடு

Use C Unique_ptr



ஸ்மார்ட் சுட்டிகள் வளத்தை மாறும் வகையில் ஒதுக்க பயன்படுகிறது. பல வகையான ஸ்மார்ட் சுட்டிகள் C ++ இல் பல்வேறு நோக்கங்களுக்காகப் பயன்படுத்தப்படுகின்றன ஆட்டோ_பிரி , தனித்துவமான_பற்றி , மற்றும் பகிரப்பட்ட_பிடிஆர் . C ++ இன் புதிய பதிப்பில் auto_ptr சுட்டிக்காட்டி நீக்கப்பட்டது. தனித்துவமான_பிடிஆர் ஆட்டோ_ப்டிரை மாற்றுவதற்குப் பயன்படுத்தப்படுகிறது. இந்த சுட்டியின் பொருள் சுட்டிக்காட்டியின் உரிமையை எடுத்துக் கொள்ளலாம். இந்த சுட்டிக்காட்டியின் பொருள் தனித்தனியாக சுட்டிக்காட்டிக்கு சொந்தமானது, வேறு எந்த சுட்டிக்காட்டி பொருளையும் சுட்டிக்காட்ட முடியாது. தனித்துவமான_பொருளானது தானாகவே பொருட்களை நீக்குகிறது. பொருள்கள் அழிக்கப்பட்டால், அல்லது பொருளின் மதிப்பு மாற்றப்பட்டால் அல்லது மீட்டமைப்பு () செயல்பாடு எனப்படும் இந்த சுட்டிக்காட்டி அந்த பொருட்களை நிர்வகிக்கிறது. Unique_ptr இன் அம்சங்கள் மற்றும் இந்த சுட்டியின் பயன்பாடுகள் இந்த டுடோரியலில் விவாதிக்கப்பட்டுள்ளன.

முக்கிய கூறுகள்:







தனித்துவமான_பொருள் பொருளின் இரண்டு முக்கிய கூறுகள் கீழே கொடுக்கப்பட்டுள்ளன:



A. சேமித்த சுட்டிக்காட்டி:



இது ஒரு தனிப்பட்ட சுட்டிக்காட்டி மூலம் உருவாக்கப்பட்ட பொருட்களை நிர்வகிக்க பயன்படுகிறது. இது சுட்டிக்காட்டி உருவாக்கும் நேரத்தில் உருவாக்கப்பட்டது, மேலும் அதை வெவ்வேறு வழிகளில் மாற்றலாம்.





B. சேமித்த நீக்கி:

இது நிர்வகிக்கப்பட்ட பொருளை நீக்கப் பயன்படுத்தப்படும் சேமித்த சுட்டிக்காட்டி வகையின் வாதத்தை எடுக்கும். இது சுட்டிக்காட்டி உருவாக்கும் நேரத்தில் உருவாக்கப்பட்டது, மேலும் அதை வெவ்வேறு வழிகளில் மாற்றலாம்.



எடுத்துக்காட்டு 1: கட்டமைப்பாளருடன் ஒரு வகுப்பின் சுட்டிக்காட்டி பொருளை உருவாக்கவும்

ஒரு வகுப்பின் தனித்துவமான சுட்டிக்காட்டி பொருள்களை அறிவித்து, வகுப்பின் முறையை அணுகுவதற்கான வழி பின்வரும் எடுத்துக்காட்டில் காட்டப்பட்டுள்ள பொருள்களைப் பயன்படுத்துவதாகும். ஒரு கட்டமைப்பாளர் மற்றும் ஒரு பொது முறை கொண்ட ஒரு வகுப்பு குறியீட்டில் அறிவிக்கப்பட்டுள்ளது. கட்டமைப்பாளருக்கு மூன்று வாதங்கள் உள்ளன. முதல் தனித்துவமான சுட்டிக்காட்டி மூன்று வாத மதிப்புகளுடன் கட்டமைப்பாளரை அழைப்பதன் மூலம் உருவாக்கப்பட்டது. தி விளைவாக() கட்டமைப்பாளரின் மூன்று வாத மதிப்புகளின் கூட்டுத்தொகையை கணக்கிடும் சுட்டிக்காட்டி பொருள் மூலம் முறை அழைக்கப்படுகிறது. அடுத்து, இரண்டாவது தனித்துவமான சுட்டிக்காட்டி பொருள் கட்டமைப்பாளரை அழைக்காமல் உருவாக்கப்பட்டது, முதல் சுட்டிக்காட்டி இரண்டாவது சுட்டிக்காட்டிக்கு நகர்த்தப்படுகிறது. தி விளைவாக() முறை இரண்டாவது சுட்டிக்காட்டி பொருளால் அழைக்கப்படுகிறது.

//தேவையான நூலகங்களைச் சேர்க்கவும்

#சேர்க்கிறது

#சேர்க்கிறது

namespace std ஐப் பயன்படுத்துதல்;

//வகுப்பை வரையறுக்கவும்
வகுப்பு சேர்க்கை{

int எண் 1, எண் 2, எண் 3;
பொது:
//கட்டமைப்பாளரை அறிவிக்கவும்
கூட்டல்(int a, int b, int c)
{
எண் 1 = a;
எண் 2 = ஆ;
எண் 3 = சி;
}
//கணக்கிட முறையை அறிவிக்கவும்தொகை
int முடிவு()
{
திரும்பஎண் 1 + எண் 2 + எண் 3;
}
};
int முக்கிய()
{
//முதல் சுட்டியை அறிவிக்கவும்
unique_ptr சுட்டிக்காட்டி 1(புதிய சேர்த்தல்(நான்கு. ஐந்து,55,30));

செலவு<<முதல் சுட்டியைப் பயன்படுத்தி தொகையின் முடிவு: '<விளைவாக() <<' n';
//இரண்டாவது சுட்டியை அறிவிக்கவும்
unique_ptr சுட்டிக்காட்டி 2;
//முதல் சுட்டியை இரண்டாவது சுட்டிக்காட்டிக்கு நகர்த்தவும்
சுட்டிக்காட்டி 2 = நகரும்(சுட்டிக்காட்டி 1);

செலவு<<இரண்டாவது சுட்டியைப் பயன்படுத்தி தொகையின் முடிவு: '<விளைவாக() <<' n';
return0;
}

வெளியீடு:

மேலே உள்ள குறியீட்டைச் செயல்படுத்திய பின் பின்வரும் வெளியீடு தோன்றும். 45, 55 மற்றும் 30 ஆகியவற்றின் கூட்டுத்தொகை 130 ஆகும்.

எடுத்துக்காட்டு 2: கட்டமைப்பாளர் மற்றும் அழிப்பாளருடன் ஒரு வகுப்பின் சுட்டிக்காட்டி பொருளை உருவாக்கவும்

ஒரு வகுப்பின் தனித்துவமான சுட்டிக்காட்டி பொருளை கன்ஸ்ட்ரக்டர் மற்றும் டிஸ்ட்ரக்டருடன் அறிவிப்பதற்கான வழி பின்வரும் எடுத்துக்காட்டில் காட்டப்பட்டுள்ளது. வகுப்பில் ஒரு வாதத்துடன் ஒரு கட்டமைப்பாளர், வகுப்பு மாறியின் மதிப்புக்கு டிஸ்ப்ளே () என்ற பொது முறை மற்றும் வகுப்பின் பொருளை அழிக்கும் முன் ஒரு அழிவு செய்தியை அச்சிடக்கூடிய ஒரு அழிப்பான் ஆகியவை உள்ளன. குறியீட்டில் தனிப்பட்ட சுட்டிக்காட்டி பொருளை உருவாக்கிய பிறகு காட்சி () முறை அழைக்கப்படுகிறது.

//தேவையான நூலகங்களைச் சேர்க்கவும்

#சேர்க்கிறது

#சேர்க்கிறது

namespace std ஐப் பயன்படுத்துதல்;

//வகுப்பை வரையறுக்கவும்
வகுப்பு வாடிக்கையாளர்
{
சரம் பெயர்;

பொது:
//கட்டமைப்பாளரை அறிவிக்கவும்
வாடிக்கையாளர்(சரம் n)
{
பெயர் = n;
செலவு<<'ஆதாரம் ஒதுக்கப்பட்டுள்ளது. n';
}

//வாடிக்கையாளர் பெயரை அச்சிட முறையை அறிவிக்கவும்
வெற்று காட்சி()
{
செலவு<<வாடிக்கையாளரின் பெயர்: '<<பெயர்<<' n';
}

//அழிப்பவரை அறிவிக்கவும்
Ome வாடிக்கையாளர்()
{
செலவு<<'வளம் அழிக்கப்படுகிறது. n';
}
};
int முக்கிய()
{
//தனித்துவமான_பிரிவுக்கு சொந்தமான ஆதாரப் பொருளை ஒதுக்கவும்
unique_ptruPointer{புதிய வாடிக்கையாளர்('மிர் அப்பாஸ்') };
uPointer->காட்சி();
return0;
}

வெளியீடு:

மேலே உள்ள குறியீட்டைச் செயல்படுத்திய பின் பின்வரும் வெளியீடு தோன்றும்:

எடுத்துக்காட்டு 3: உரிமையை மாற்றிய பின் சுட்டியை சரிபார்க்கவும்

ஒரு வகுப்பின் இரண்டு தனித்துவமான சுட்டிகளை உருவாக்குவதன் மூலம் தனித்துவமான சுட்டியின் உரிமையை சரிபார்க்க வழி பின்வரும் எடுத்துக்காட்டில் காட்டப்பட்டுள்ளது. இரண்டு சரம் மாறிகள் மற்றும் ஒரு பொது முறை கொண்ட ஒரு வகுப்பு குறியீட்டில் அறிவிக்கப்பட்டுள்ளது. வகுப்பின் Book_details () முறை வகுப்பின் முதல் தனித்துவமான சுட்டிக்காட்டி பொருளை உருவாக்கிய பிறகு அழைக்கப்படுகிறது. அடுத்து, இரண்டாவது தனித்துவமான சுட்டிக்காட்டி பொருள் உருவாக்கப்பட்டது, மேலும் முதல் சுட்டிக்காட்டி முதல் சுட்டியை அழிக்கும் இரண்டாவது சுட்டிக்காட்டிக்கு நகர்த்தப்பட்டது. இரண்டு சுட்டிகளின் உரிமையும் பின்னர் சரிபார்க்கப்பட வேண்டும்.

//தேவையான நூலகங்களைச் சேர்க்கவும்

#சேர்க்கிறது

#சேர்க்கிறது

namespace std ஐப் பயன்படுத்துதல்;

//வகுப்பை வரையறுக்கவும்
வகுப்பு புத்தகம்{

சரம் தலைப்பு ='சி ++ நிரலாக்க மொழி';
சரம் ஆசிரியர் ='ஜார்ன் ஸ்ட்ரோஸ்ட்ரப்';

பொது:
//புத்தக விவரங்களை அச்சிட முறையை அறிவிக்கவும்
voidBook_details()
{
செலவு<<புத்தகத்தின் பெயர்: '<<தலைப்பு<<' n';
செலவு<<ஆசிரியரின் பெயர்: '<<நூலாசிரியர்<<' n';
}
};
int முக்கிய()
{
//முதல் சுட்டியை அறிவிக்கவும்
unique_ptr சுட்டிக்காட்டி 1(புதிய புத்தகம்());

சுட்டிக்காட்டி 1->புத்தகம்_ விவரங்கள்();
//இரண்டாவது சுட்டியை அறிவிக்கவும்
unique_ptr சுட்டிக்காட்டி 2;
//முதல் சுட்டியை இரண்டாவது சுட்டிக்காட்டிக்கு நகர்த்தவும்
சுட்டிக்காட்டி 2 = நகரும்(சுட்டிக்காட்டி 1);

//முதல் சுட்டியைச் சரிபார்க்கவும்
என்றால் (நிலையான_காஸ்ட்(சுட்டிக்காட்டி 1))செலவு<<முதல் சுட்டிக்காட்டி பூஜ்யமானது அல்ல n';
elsecout<<'முதல் சுட்டிக்காட்டி பூஜ்யமானது n';
//இரண்டாவது சுட்டியைச் சரிபார்க்கவும்
என்றால் (நிலையான_காஸ்ட்(சுட்டிக்காட்டி 2))செலவு<<இரண்டாவது சுட்டிக்காட்டி பூஜ்யமானது அல்ல n';
elsecout<<இரண்டாவது சுட்டிக்காட்டி பூஜ்யமானது n';

return0;
}

வெளியீடு:

மேலே உள்ள குறியீட்டைச் செயல்படுத்திய பின் பின்வரும் வெளியீடு தோன்றும். வெளியீட்டின் படி, முதல் சுட்டியின் உரிமை நீக்கப்பட்டது, மற்றும் செய்தி, முதல் சுட்டிக்காட்டி பூஜ்யமானது முதல் சுட்டிக்காட்டிக்கு அச்சிடப்பட்டுள்ளது. இரண்டாவது சுட்டியின் உரிமை உள்ளது, மற்றும் செய்தி, முதல் சுட்டிக்காட்டி பூஜ்யமானது அல்ல இரண்டாவது சுட்டிக்காட்டிக்கு அச்சிடப்பட்டுள்ளது:

முடிவுரை:

சி ++ நிரலாக்கத்தில் ஒரு தனித்துவமான சுட்டியைப் பயன்படுத்துவதன் நோக்கங்கள் பல எடுத்துக்காட்டுகளைப் பயன்படுத்தி இந்த டுடோரியலில் விவரிக்கப்பட்டுள்ளன. தனித்துவமான சுட்டியை உருவாக்குவது, சுட்டிக்காட்டியின் உரிமையை மாற்றுவது மற்றும் சுட்டிக்காட்டியின் தற்போதைய உரிமையை சரிபார்ப்பதற்கான வழிகள் தனித்துவமான சுட்டிக்காட்டியின் பயன்பாட்டை வாசகர்கள் சரியாக அறிய உதவும் வகையில் இங்கு விளக்கப்பட்டுள்ளது.