சி ++ இல் செயல்பாடு ஓவர்லோடிங் மற்றும் மேலெழுதலுக்கான வித்தியாசம்

நூலாசிரியர்: Laura McKinney
உருவாக்கிய தேதி: 1 ஏப்ரல் 2021
புதுப்பிப்பு தேதி: 11 மே 2024
Anonim
செயல்பாடு ஓவர்லோடிங் மற்றும் ஃபங்ஷன் ஓவர்ரைடிங் இடையே உள்ள வேறுபாடு | c++ இல் ஓவர்லோடிங் மற்றும் ஓவர்ரைடிங்
காணொளி: செயல்பாடு ஓவர்லோடிங் மற்றும் ஃபங்ஷன் ஓவர்ரைடிங் இடையே உள்ள வேறுபாடு | c++ இல் ஓவர்லோடிங் மற்றும் ஓவர்ரைடிங்

உள்ளடக்கம்


இல் ‘ஓவர்லோடிங்கிலிருந்து‘சுமை ஏற்றப்பட்ட செயல்பாடுகளை ஒரே செயல்பாட்டு பெயருடன் மறுவரையறை செய்கிறோம், ஆனால், வெவ்வேறு எண் மற்றும் அளவுருக்கள். இல் ‘நாயுடு‘மேலெழுதப்பட்ட செயல்பாட்டின் முன்மாதிரி நிரல் முழுவதும் ஒரே மாதிரியாக இருக்கிறது, ஆனால், மேலெழுதப்பட வேண்டிய செயல்பாடு அடிப்படை வகுப்பில் உள்ள‘ மெய்நிகர் ’என்ற முக்கிய வார்த்தைக்கு முன்னதாகவே உள்ளது மற்றும் எந்த முக்கிய சொற்களும் இல்லாமல் பெறப்பட்ட வகுப்பால் மறுவரையறை செய்யப்படுகிறது.

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


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

  1. ஒப்பீட்டு விளக்கப்படம்
  2. வரையறை
  3. முக்கிய வேறுபாடுகள்
  4. ஒற்றுமைகள்
  5. முடிவுரை


ஒப்பீட்டு விளக்கப்படம்:

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


ஓவர்லோடிங்கின் வரையறை

தொகுக்கும் நேர பாலிமார்பிசம் ‘ஓவர்லோடிங்’ என்று அழைக்கப்படுகிறது. பாலிமார்பிஸத்தின் ஒரு கருத்திலிருந்து ஓவர்லோடிங் உருவாக்கப்படுவதால், இது “பல முறைகளுக்கான பொதுவான இடைமுகத்தை” வழங்குகிறது. அதாவது, ஒரு செயல்பாடு அதிக சுமை இருந்தால், அது மறுவரையறை செய்யப்படும்போது அதே செயல்பாட்டு பெயரைக் கொண்டிருக்கும்.

அதிக சுமை கொண்ட செயல்பாடுகள், வேறுபட்ட ‘எண் அல்லது அளவுரு (கள்)’ என்பதில் வேறுபடுகின்றன, இது ஒரு சுமை செயல்பாட்டை மற்றொன்றிலிருந்து வேறுபடுத்துகிறது. இந்த வழியில், எந்த சுமை செயல்பாடு அழைக்கப்படுகிறது என்பதை கம்பைலர் அங்கீகரிக்கிறது. பொதுவாக அதிக சுமை கொண்ட செயல்பாடுகள் ‘கட்டமைப்பாளர்கள்’. ‘நகலெடுப்பவர் நகலெடுப்பது’ என்பது ஒரு வகையான “கட்டமைப்பாளர் ஓவர்லோடிங்” ஆகும்.

சி ++ இல் அதிக சுமைகளை செயல்படுத்துதல்

வகுப்பு ஓவர்லோட் {int a, b; பொது: int சுமை (int x) {// முதல் சுமை () செயல்பாடு a = x; திரும்ப ஒரு; } int சுமை (int x, int y) second // இரண்டாவது சுமை () செயல்பாடு a = x; ஆ = ஒய்; return a * b; }}; int main () {ஓவர்லோட் O1; O1.load (20); // முதல் சுமை () செயல்பாட்டு அழைப்பு O1.load (20,40); // இரண்டாவது சுமை () செயல்பாட்டு அழைப்பு}

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

மேலெழுதும் வரையறை

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

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

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

வகுப்பு அடிப்படை {பொது: மெய்நிகர் வெற்றிட வேடிக்கை () base // அடிப்படை வகுப்பு கவுட்டின் மெய்நிகர் செயல்பாடு << "இது ஒரு அடிப்படை வகுப்புகள் funct ()"; }}; class der1: public base {public: void funct () {// பெறப்பட்ட 1 வகுப்பு cout இல் மறுவரையறை செய்யப்பட்ட அடிப்படை வகுப்பின் மெய்நிகர் செயல்பாடு << "இது ஒரு பெறப்பட்ட 1 வகுப்புகள் funct ()"; }}; class der2: public base {public: void funct () {// பெறப்பட்ட 2 வகுப்பு cout இல் மறுவரையறை செய்யப்பட்ட அடிப்படை வகுப்பின் மெய்நிகர் செயல்பாடு << "இது ஒரு பெறப்பட்ட 2 வகுப்புகள் funct ()"; }}; int main () {base * p, b; பெறப்பட்ட 1 டி 1; பெறப்பட்ட 2 டி 2; * ப = & ஆ; P-> funct (); // அடிப்படை வகுப்பு வேடிக்கைக்கு அழைப்பு (). * ப = & D1; P-> funct (); பெறப்பட்ட 1 வகுப்பு வேடிக்கைக்கு () // அழைப்பு. * ப = & D2; P-> funct (); பெறப்பட்ட 2 வகுப்பு வேடிக்கைக்கு () அழைப்பு. திரும்ப 0; }

இங்கே, ஒரு ஒற்றை அடிப்படை வகுப்பு உள்ளது, இது இரண்டு பெறப்பட்ட வகுப்புகளால் பகிரங்கமாக பெறப்படுகிறது. ஒரு மெய்நிகர் செயல்பாடு ஒரு அடிப்படை வகுப்பில் ‘மெய்நிகர்’ என்ற முக்கிய சொல்லுடன் வரையறுக்கப்படுகிறது, மேலும் இது முக்கிய சொற்கள் இல்லாத பெறப்பட்ட வகுப்புகள் இரண்டாலும் மறுவரையறை செய்யப்படுகிறது. பிரதான () இல், அடிப்படை வகுப்பு ஒரு சுட்டிக்காட்டி மாறி ‘p’ மற்றும் ஒரு பொருள் ‘b’ ஐ உருவாக்குகிறது; ‘பெறப்பட்ட 1 ′ வகுப்பு ஒரு பொருளை உருவாக்குகிறது d1 மற்றும் பெறப்பட்ட 2 வகுப்பு ஒரு பொருளை உருவாக்குகிறது d2’.

இப்போது, ​​ஆரம்பத்தில் அடிப்படை வகுப்பின் பொருளின் முகவரி ‘பி’ அடிப்படை வகுப்பின் சுட்டிக்காட்டிக்கு ‘பி’ ஒதுக்கப்பட்டுள்ளது. ‘P’ செயல்பாடு funct () க்கு அழைப்பு விடுகிறது, எனவே அடிப்படை வகுப்பின் செயல்பாடு அழைக்கப்படுகிறது.பின்னர் பெறப்பட்ட 1 வகுப்பு பொருளின் முகவரி ‘d1’ சுட்டிக்காட்டி ‘p’ க்கு ஒதுக்கப்படுகிறது, மீண்டும் அது funct () க்கு அழைப்பு விடுகிறது; இங்கே பெறப்பட்ட 1 வகுப்பின் செயல்பாடு () செயல்படுத்தப்படுகிறது. இறுதியாக, பெறப்பட்ட 2 வகுப்பின் பொருளுக்கு சுட்டிக்காட்டி ‘p’ ஒதுக்கப்படுகிறது. பின்னர் பெறப்பட்ட 2 வகுப்பின் செயல்பாட்டு செயல்பாட்டை () இயக்கும் செயல்பாட்டு செயல்பாடு () ஐ ‘பி’ அழைக்கிறது.

பெறப்பட்ட 1 / பெறப்பட்ட 2 வகுப்பு funct () ஐ மறுவரையறை செய்யவில்லை என்றால், மெய்நிகர் செயல்பாடு ‘படிநிலை’ என்பதால், அடிப்படை வகுப்பின் funct () அழைக்கப்பட்டிருக்கும்.

  1. அதிக சுமை கொண்ட ஒரு செயல்பாட்டின் முன்மாதிரி வேறுபடுகிறது, ஏனெனில் அதிக சுமை கொண்ட செயல்பாட்டிற்கு அனுப்பப்படும் அளவுருவின் வகை மற்றும் எண்ணிக்கை. மறுபுறம், மேலெழுதப்பட்ட செயல்பாட்டின் முன்மாதிரி மாறாது, ஏனெனில் மேலெழுதப்பட்ட செயல்பாடு அது சார்ந்த வெவ்வேறு வகுப்பிற்கு வெவ்வேறு செயலைச் செய்கிறது, ஆனால் ஒரே வகை மற்றும் அளவுருவின் எண்ணிக்கையுடன்.
  2. ஓவர்லோட் செய்யப்பட்ட செயல்பாட்டு பெயர் எந்தவொரு முக்கிய வார்த்தையுடனும் முந்தாது, அதேசமயம் மேலெழுதப்பட்ட செயல்பாட்டின் பெயர் அடிப்படை வகுப்பில் மட்டுமே “மெய்நிகர்” என்ற முக்கிய வார்த்தையுடன் முந்தியுள்ளது.
  3. எந்த ஓவர்லோட் செயல்பாடு செயல்படுத்தப்படுகிறது என்பது செயல்பாட்டுக்கு அனுப்பப்படும் அளவுருவின் வகை அல்லது எண்ணிக்கையைப் பொறுத்தது. எந்த வகுப்பின் மேலெழுதப்பட்ட செயல்பாடு, எந்த வகுப்பின் பொருள் முகவரி சுட்டிக்காட்டிக்கு ஒதுக்கப்படுகிறது என்பதைப் பொறுத்தது, இது செயல்பாட்டைத் தூண்டியது.
  4. எந்த ஓவர்லோட் செயல்பாடு செயல்படுத்தப்பட வேண்டும் என்பது தொகுக்கும் நேரத்தில் தீர்க்கப்படும். எந்த மேலெழுதப்பட்ட செயல்பாடு இயக்க நேரத்தில் தீர்க்கப்படும்.
  5. கட்டமைப்பாளர்களை ஓவர்லோட் செய்யலாம் ஆனால் மீற முடியாது.
  6. அழிப்பவர்களை ஓவர்லோட் செய்ய முடியாது, ஆனால் அவை மீறப்படலாம்.
  7. ஓவர்லோடிங் ஆரம்ப பிணைப்பை அடைகிறது, ஏனெனில் எந்த சுமை செயல்பாடு செயல்படுத்தப்படும் என்பது தொகுக்கும் நேரத்தில் தீர்க்கப்படும். மேலெழுதப்படுவது தாமதமாக பிணைப்பை அடைகிறது, ஏனெனில் எந்த மேலெழுதப்பட்ட செயல்பாடு செயல்படுத்தப்படும் என்பது இயக்க நேரத்தில் தீர்க்கப்படும்.

ஒற்றுமைகள்

  1. இரண்டுமே ஒரு வகுப்பின் உறுப்பினர் செயல்பாடுகளுக்குப் பயன்படுத்தப்படுகின்றன.
  2. இருவருக்கும் பின்னால் உள்ள அடிப்படை கருத்து பாலிமார்பிசம்.
  3. செயல்பாடுகளுக்கு ஓவர்லோடிங் மற்றும் மேலெழுதும் போது செயல்பாட்டு பெயர் அப்படியே இருக்கும்.

முடிவுரை

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