Sobes.tech
Junior — Middle

Lehet-e C++-ban olyan osztályt definiálni, amely csak tiszta virtuális függvényeket tartalmaz, és amelyet nem lehet közvetlenül létrehozni?

sobes.tech MI

Válasz az MI-től

Igen, C++-ban lehet olyan osztályt definiálni, amely csak tiszta virtuális függvényeket tartalmaz, és ilyen osztályt nem lehet közvetlenül létrehozni. Ezt az osztályt absztrakt osztálynak nevezik. Szolgál interfészként vagy alap osztályként azok számára, akiknek minden tiszta virtuális függvényt implementálniuk kell.

Példa:

class Interface {
public:
    virtual void doSomething() = 0; // tiszta virtuális függvény
    virtual ~Interface() = default;
};

// Nem lehet közvetlenül példányosítani az Interface-t:
// Interface obj; // fordítási hiba

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

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