C ++ இல் திரும்பப் பெறும் செயல்பாடு

Callback Function C



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

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







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



கட்டுரை உள்ளடக்கம்

அடிப்படை அழைப்பு செயல்பாடு திட்டம்

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



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

பயன்படுத்தி பெயர்வெளிமணி;



intmainFn(கரிசா[],int (*ptr)(int))

{

intid1= 1;

intid2= 2;

intவழக்கமாக= (*ptr)(id2);

செலவு<<'முக்கிய செயல்பாடு:'<<id1<<''<<சா<<''<<வழக்கமாக<<' n';

திரும்பid1;

}


intசிபி(intஅடையாளம்)

{

செலவு<<'திரும்ப அழைக்கும் செயல்பாடு'<<' n';

திரும்பஅடையாளம்;

}


intமுக்கிய()

{

int (*ptr)(int) = &சிபி;

கரிஇல்லை[] = 'மற்றும்';

mainFn(தந்தை, சிபி);



திரும்ப 0;

}

வெளியீடு:





திரும்ப அழைக்கும் செயல்பாடு

முக்கிய செயல்பாடு: 1 மற்றும் 2

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

முக்கிய செயல்பாட்டு அறிவிப்பின் அளவுரு பட்டியலில் ஒரு அளவுருவாக அழைப்பு செயல்பாட்டின் அறிவிப்பை கவனிக்கவும். திரும்ப அழைக்கும் செயல்பாட்டின் அறிவிப்பு int (*ptr) (int). முதன்மைச் செயல்பாட்டின் வரையறையில், ஒரு செயல்பாட்டு அழைப்பு போன்ற, திரும்ப அழைக்கும் செயல்பாட்டு வெளிப்பாட்டைக் கவனியுங்கள்; திரும்ப அழைப்பு செயல்பாடு அழைப்புக்கான எந்த வாதமும் அங்கு அனுப்பப்படும். இந்த செயல்பாட்டு அழைப்பிற்கான அறிக்கை:



intவழக்கமாக= (*ptr)(id2);

Id2 என்பது ஒரு வாதம். ptr என்பது அளவுருவின் ஒரு பகுதி, ஒரு சுட்டிக்காட்டி, இது முக்கிய () செயல்பாட்டில் உள்ள திரும்பப்பெறுதல் செயல்பாட்டின் குறிப்புடன் இணைக்கப்படும்.

வெளிப்பாட்டைக் கவனியுங்கள்:

int (*ptr)(int) = &சிபி;

முக்கிய () செயல்பாட்டில், அழைப்பு செயல்பாட்டின் அறிவிப்பை (வரையறை இல்லாமல்) அதே அழைப்பு செயல்பாட்டின் வரையறையின் பெயருடன் இணைக்கிறது.

முக்கிய செயல்பாடு முக்கிய () செயல்பாட்டில் அழைக்கப்படுகிறது:

mainFn(தந்தை, சிபி);

சா என்பது ஒரு சரம் மற்றும் சிபி என்பது எந்த வாதமும் இல்லாமல் அழைப்பு செயல்பாட்டின் பெயர்.

அழைப்பு செயல்பாட்டின் ஒத்திசைவான நடத்தை

பின்வரும் திட்டத்தை கருத்தில் கொள்ளுங்கள்:

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

பயன்படுத்தி பெயர்வெளிமணி;



வெற்றிடம்mainFn(வெற்றிடம் (*ptr)())

{

செலவு<<'முக்கிய செயல்பாடு'<<' n';

(*ptr)();

}


வெற்றிடம்சிபி()

{

செலவு<<'திரும்ப அழைக்கும் செயல்பாடு'<<' n';

}


வெற்றிடம்fn()

{

செலவு<<'பார்த்தேன்'<<' n';

}


intமுக்கிய()

{

வெற்றிடம் (*ptr)() = &சிபி;

mainFn(சிபி);

fn();



திரும்ப 0;

}

வெளியீடு:

முக்கிய செயல்பாடு

திரும்ப அழைக்கும் செயல்பாடு

பார்த்தேன்

இங்கே ஒரு புதிய செயல்பாடு உள்ளது. அனைத்து புதிய செயல்பாடுகளும், வெளியீட்டைக் காண்பிப்பதே ஆகும். முக்கிய () செயல்பாட்டில், முதன்மை செயல்பாடு அழைக்கப்படுகிறது, பின்னர் புதிய செயல்பாடு, fn () அழைக்கப்படுகிறது. வெளியீடு முதன்மைச் செயல்பாட்டிற்கான குறியீட்டைச் செயல்படுத்துவதைக் காட்டுகிறது, பின்னர் திரும்ப அழைக்கும் செயல்பாட்டைச் செயல்படுத்தியது, இறுதியாக அது fn () செயல்பாட்டைச் செயல்படுத்தியது. இது ஒத்திசைவான (ஒற்றை-திரிக்கப்பட்ட) நடத்தை.

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

சரி, செயல்பாடு, fn () ஐ முக்கிய செயல்பாட்டின் வரையறைக்குள் இருந்து அழைக்கலாம், அதற்கு பதிலாக முக்கிய () செயல்பாட்டிற்குள், பின்வருமாறு:

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

பயன்படுத்தி பெயர்வெளிமணி;



வெற்றிடம்fn()

{

செலவு<<'பார்த்தேன்'<<' n';

}


வெற்றிடம்mainFn(வெற்றிடம் (*ptr)())

{

செலவு<<'முக்கிய செயல்பாடு'<<' n';

fn();

(*ptr)();

}


வெற்றிடம்சிபி()

{

செலவு<<'திரும்ப அழைக்கும் செயல்பாடு'<<' n';

}


intமுக்கிய()

{

வெற்றிடம் (*ptr)() = &சிபி;

mainFn(சிபி);



திரும்ப 0;

}

வெளியீடு:

முக்கிய செயல்பாடு

பார்த்தேன்

திரும்ப அழைக்கும் செயல்பாடு

இது ஒத்திசைவற்ற நடத்தையின் பிரதிபலிப்பாகும். இது ஒத்திசைவற்ற நடத்தை அல்ல. இது இன்னும் ஒத்திசைவான நடத்தை.

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

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

பயன்படுத்தி பெயர்வெளிமணி;



வெற்றிடம்mainFn(வெற்றிடம் (*ptr)())

{

(*ptr)();

செலவு<<'முக்கிய செயல்பாடு'<<' n';

}


வெற்றிடம்சிபி()

{

செலவு<<'திரும்ப அழைக்கும் செயல்பாடு'<<' n';

}


வெற்றிடம்fn()

{

செலவு<<'பார்த்தேன்'<<' n';

}


intமுக்கிய()

{

வெற்றிடம் (*ptr)() = &சிபி;

mainFn(சிபி);

fn();



திரும்ப 0;

}

வெளியீடு இப்போது,

திரும்ப அழைக்கும் செயல்பாடு

முக்கிய செயல்பாடு

பார்த்தேன்

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

அழைப்பு செயல்பாடு கொண்ட ஒத்திசைவற்ற நடத்தை

அடிப்படை ஒத்திசைவற்ற அழைப்பு செயல்பாடு திட்டத்திற்கான போலி குறியீடு:

வகை வெளியீடு;

cb வகை(வகை வெளியீடு)

{

//அறிக்கைகள்

}


பிரின்சிபால்எஃப்என் வகை(வகை உள்ளீடு, வகை cb(வகை வெளியீடு))

{

//அறிக்கைகள்

}

போலி குறியீட்டின் வெவ்வேறு இடங்களில் உள்ளீடு மற்றும் வெளியீடு தரவின் நிலைகளைக் கவனியுங்கள். திரும்ப அழைக்கும் செயல்பாட்டின் உள்ளீடு அதன் வெளியீடு ஆகும். முக்கிய செயல்பாட்டின் அளவுருக்கள் பொது குறியீட்டிற்கான உள்ளீட்டு அளவுரு மற்றும் திரும்ப அழைப்பு செயல்பாட்டிற்கான அளவுரு ஆகும். இந்த திட்டத்தின் மூலம், திரும்பப்பெறுதல் செயல்பாட்டின் வெளியீடு படிக்கப்படுவதற்கு முன் (இன்னும் முக்கிய () செயல்பாட்டில்) முக்கிய () செயல்பாட்டில் மூன்றாவது செயல்பாடு செயல்படுத்தப்படலாம் (அழைக்கப்படுகிறது). பின்வரும் குறியீடு இதை விளக்குகிறது:

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

பயன்படுத்தி பெயர்வெளிமணி;

கரி *வெளியீடு;


வெற்றிடம்சிபி(கரிவெளியே[])

{

வெளியீடு=வெளியே;

}



வெற்றிடம்mainFn(கரிஉள்ளீடு[],வெற்றிடம் (*ptr)(கரி[ஐம்பது]))

{

(*ptr)(உள்ளீடு);

செலவு<<'முக்கிய செயல்பாடு'<<' n';

}


வெற்றிடம்fn()

{

செலவு<<'பார்த்தேன்'<<' n';

}


intமுக்கிய()

{

கரிஉள்ளீடு[] = 'திரும்ப அழைக்கும் செயல்பாடு';

வெற்றிடம் (*ptr)(கரி[]) = &சிபி;

mainFn(உள்ளீடு, சிபி);

fn();

செலவு<<வெளியீடு<<' n';



திரும்ப 0;

}

நிரலின் வெளியீடு:

முக்கிய செயல்பாடு

பார்த்தேன்

திரும்ப அழைக்கும் செயல்பாடு

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

தூய சி ++ உடன் ஒத்திசைவற்ற நடத்தையை திரும்பப் பெறுவதற்கான ஒற்றை-திரிக்கப்பட்ட வழி இது.

எதிர்கால நூலகத்தின் அடிப்படை பயன்பாடு

ஒத்திசைவற்ற அழைப்பு செயல்பாட்டுத் திட்டத்தின் யோசனை என்னவென்றால், திரும்பப் பெறும் செயல்பாடு திரும்புவதற்கு முன் முக்கிய செயல்பாடு திரும்பும். மேற்கண்ட குறியீட்டில் இது மறைமுகமாக, திறம்பட செய்யப்பட்டது.

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

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

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

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

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

பயன்படுத்தி பெயர்வெளிமணி;

எதிர்காலம்<லேசான கயிறு>வெளியீடு;

சரம் சிபி(சரம் ஸ்ட்ரை)

{

திரும்பஸ்ட்ரை;

}



வெற்றிடம்mainFn(சரம் உள்ளீடு)

{

வெளியீடு=ஒத்திசைவற்ற(cb, உள்ளீடு);

செலவு<<'முக்கிய செயல்பாடு'<<' n';

}


வெற்றிடம்fn()

{

செலவு<<'பார்த்தேன்'<<' n';

}


intமுக்கிய()

{

சரம் உள்ளீடு=லேசான கயிறு('திரும்ப அழைக்கும் செயல்பாடு');

mainFn(உள்ளீடு);

fn();

சரம் ரெட்=வெளியீடுபெறு(); தேவைப்பட்டால் மீண்டும் அழைப்பு வரும் வரை காத்திருக்கிறது

செலவு<<சரி<<' n';



திரும்ப 0;

}

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

முடிவுரை

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

திரும்ப அழைக்கும் செயல்பாடு திட்டம் ஒத்திசைவற்றதாக இருக்க வேண்டிய அவசியமில்லை. திரும்ப அழைப்பு செயல்பாடு திட்டம் ஒத்திசைவற்றது என்பதை உறுதிப்படுத்த, குறியீட்டின் முக்கிய உள்ளீட்டை, அழைப்பு செயல்பாட்டிற்கான உள்ளீட்டை உருவாக்கவும்; குறியீட்டின் முக்கிய வெளியீடு, திரும்ப அழைப்பு செயல்பாட்டின் வெளியீடு; திரும்பப்பெறுதல் செயல்பாட்டின் வெளியீட்டை மாறி அல்லது தரவு அமைப்பில் சேமிக்கவும். முக்கிய () செயல்பாட்டில், முக்கிய செயல்பாட்டை அழைத்த பிறகு, பயன்பாட்டின் பிற அறிக்கைகளை இயக்கவும். திரும்ப அழைக்கும் செயல்பாட்டின் வெளியீடு தேவைப்படும்போது, ​​முக்கிய () செயல்பாட்டில், அதைப் (படிக்க மற்றும் காட்சி) பயன்படுத்தவும்.