Sobes.tech
Junior — Middle

Lze v C++ definovat třídu obsahující pouze čistě virtuální funkce a kterou nelze přímo vytvořit?

sobes.tech AI

Odpověď od AI

Ano, v C++ lze definovat třídu obsahující pouze čistě virtuální funkce, a takovou třídu nelze přímo vytvořit. Tato třída se nazývá abstraktní třída. Slouží jako rozhraní nebo základní třída pro dědice, kteří musí implementovat všechny čistě virtuální funkce.

Příklad:

class Interface {
public:
    virtual void doSomething() = 0; // čistě virtuální funkce
    virtual ~Interface() = default;
};

// Nelze přímo vytvořit objekt Interface:
// Interface obj; // chyba kompilace

class Implementation : public Interface {
public:
    void doSomething() override {
        // implementace
    }
};

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