சி ++ செயல்பாடு மேலெழுதல்

C Function Overriding



இந்த கட்டுரையில், C ++ நிரலாக்க மொழியில் செயல்பாட்டு மேலெழுதலை உள்ளடக்குவோம். சி ++ இயக்க நேர பாலிமார்பிஸத்தை ஆதரிக்கிறது.

செயல்பாட்டு மேலெழுதலில், குழந்தை வகுப்பு அதன் பெற்றோர் வகுப்பில் ஏற்கனவே வரையறுக்கப்பட்ட செயல்பாட்டை மறுவரையறை செய்கிறது.







புரோகிராமருக்கு வர்க்கம் சார்ந்த குறிப்பிட்ட செயல்பாட்டை வழங்க உதவுகிறது (அடிப்படை வகுப்பில் வரையறுக்கப்பட்டிருந்தாலும்).



இப்போது, ​​நாம் சில எடுத்துக்காட்டுகளைப் பார்ப்போம் மற்றும் C ++ இல் செயல்பாட்டை மீறுதல் கருத்தைப் புரிந்துகொள்வோம்.



எடுத்துக்காட்டு -1

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





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

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

நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;

// அடிப்படை வகுப்பு
வகுப்பு அடிப்படை_ வகுப்பு
{
பொது:
வெற்றிடம்பயன்()
{
செலவு<< 'டிஸ்ப் () அடிப்படை வகுப்பில் செயல்படுகிறது.' <<endl;
}

};

// பெறப்பட்ட வகுப்பு
வகுப்பு பெறப்பட்டது_ வகுப்பு:பொது அடிப்படை_ வகுப்பு
{
பொது:
வெற்றிடம்பயன்()
{
செலவு<< பெறப்பட்ட வகுப்பில் டிஸ்ப் () செயல்பாடு ' <<endl;
}
};

intமுக்கிய()
{
பெறப்பட்ட_ வகுப்பு d;
பயன்(); // டிஸ்பிவ் () பெறப்பட்ட வர்க்கப் பொருளில் செயல்படுகிறது
திரும்ப 0;
}



எடுத்துக்காட்டு -2

இந்த எடுத்துக்காட்டில், பெறப்பட்ட வகுப்பு பொருள் மூலம் செயல்பாட்டின் அடிப்படை வகுப்பு பதிப்பை எப்படி வேண்டுமென்றே அழைப்பது என்று பார்ப்போம். பெறப்பட்ட வகுப்பு செயல்பாடு வரையறையில், செயல்பாட்டின் அடிப்படை வகுப்பு பதிப்பை அழைக்க நாங்கள் ஸ்கோப் ரெசல்யூஷன் ஆபரேட்டரைப் பயன்படுத்துகிறோம்.

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

நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;

வகுப்பு அடிப்படை_ வகுப்பு
{
பொது:
வெற்றிடம்பயன்()
{
செலவு<< 'டிஸ்ப் () அடிப்படை வகுப்பில் செயல்படுகிறது.' <<endl;
}

};

வகுப்பு பெறப்பட்டது_ வகுப்பு:பொது அடிப்படை_ வகுப்பு
{
பொது:
வெற்றிடம்பயன்()
{
அடிப்படை_ வகுப்பு::பயன்(); // டிஸ்ப் () இன் அடிப்படை வகுப்பு பதிப்பை அழைக்கவும்
}
};

intமுக்கிய()
{
பெறப்பட்ட_ வகுப்பு d;
பயன்();
திரும்ப 0;
}

உதாரணம் -3

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

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

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

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

நேம்ஸ்பேஸ் எஸ்டிடியைப் பயன்படுத்துதல்;

வகுப்பு விலங்கு
{
பொது:
வெற்றிடம்ஒலி()
{
செலவு<< 'விலங்கு ஒலி!' <<endl;
}

};

// பெறப்பட்ட வகுப்பு - நாய் வகுப்பு
வகுப்பு நாய்:பொது விலங்கு
{
பொது:
வெற்றிடம்ஒலி()
{
செலவு<< 'நாய் ஒலி - மரப்பட்டை.' <<endl;
}
};

// பெறப்பட்ட வகுப்பு - வாத்து வகுப்பு
வகுப்பு வாத்து:பொது விலங்கு
{
பொது:
வெற்றிடம்ஒலி()
{
செலவு<< 'வாத்து ஒலி - குவாக்.' <<endl;
}
};


intமுக்கிய()
{
நாய் நாய்;
வாத்து வாத்து;

நாய்ஒலி(); // நாயின் ஒலி ()
வாத்துஒலி(); // வாத்தின் ஒலி ()

திரும்ப 0;
}

முடிவுரை

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