Sobes.tech
Junior — Middle

Je možné v C++ definovať triedu obsahujúcu iba čisté virtuálne funkcie a ktorú nie je možné vytvoriť priamo?

sobes.tech AI

Odpoveď od AI

Áno, v C++ je možné definovať triedu, ktorá obsahuje iba čisté virtuálne funkcie, a takúto triedu nie je možné priamo vytvoriť. Táto trieda sa nazýva abstraktná trieda. Slúži ako rozhranie alebo základná trieda pre dedičov, ktorí musia implementovať všetky čisté virtuálne funkcie.

Príklad:

class Interface {
public:
    virtual void doSomething() = 0; // čistá virtuálna funkcia
    virtual ~Interface() = default;
};

// Nie je možné priamo vytvoriť objekt Interface:
// Interface obj; // chyba kompilácie

class Implementation : public Interface {
public:
    void doSomething() override {
        // implementácia
    }
};

int main() {
    Implementation impl;
    impl.doSomething();
}