முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 6 · பாடம் 2 இன் 2பாடத்திட்டத்தில் 14/18~15 min
தொகுதி பாடங்கள் (2/2)

பாலிமார்பிசம் மற்றும் மெய்நிகர் செயல்பாடுகள்

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

மெய்நிகர் செயல்பாடுகள்: virtual மற்றும் override

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

C++
class Employee {
public:
    virtual void work() {
        std::cout << "Generic work" << std::endl;
    }
    // IMPORTANT: Virtual destructor in base class to avoid memory leaks
    virtual ~Employee() = default;
};

class Developer : public Employee {
public:
    void work() override {
        std::cout << "Writing C++ code" << std::endl;
    }
};

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

C++
Employee* emp = new Developer();
emp->work(); // Prints "Writing C++ code" instead of "Generic work"
delete emp;

சுருக்க வகுப்புகள் மற்றும் தூய மெய்நிகர் செயல்பாடுகள்

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

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

C++
class Instrument {
public:
    virtual void play() = 0; // Pure virtual
    virtual ~Instrument() = default;
};

class Piano : public Instrument {
public:
    void play() override {
        std::cout << "Playing piano..." << std::endl;
    }
};

நீங்களே முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#cpp.m6.l2.e1
முயற்சிகள்: 0ஏற்றுகிறது…

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

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

அடிப்படை வகுப்பு முறைக்கு `மெய்நிகர்` என்பதை முன்வைத்து, பெறப்பட்ட வகுப்பில் அளவுரு அடைப்புக்குறிகளுக்குப் பிறகு `ஓவர்ரைடு` என்பதை நினைவில் கொள்ளவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#cpp.m6.l2.e2
முயற்சிகள்: 0ஏற்றுகிறது…

பிரிண்ட்டபிள் என்ற சுருக்க வகுப்பிற்குள் சுத்தமான மெய்நிகர் செயல்பாடு அச்சு() வெற்றிடத்தை திரும்பப் பெறுவதை அறிவிக்கவும். பின்னர் Printable இலிருந்து பொதுவில் பெறப்படும் ஆவண வகுப்பை உருவாக்கவும் மற்றும் 'Printing Document' ஐ அச்சிடுவதற்கு அச்சு() முறையை செயல்படுத்தவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

ஒரு தூய மெய்நிகர் செயல்பாடு `மெய்நிகர் வெற்றிட அச்சு() = 0;` என்ற கையொப்பத்துடன் அறிவிக்கப்படுகிறது. `அச்சிடக்கூடிய` இலிருந்து `ஆவணம்` பொதுவில் பெறப்படுவதை உறுதிசெய்யவும்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்