Sobes.tech
Junior — Middle

Kan in C++ een klasse worden gedefinieerd die alleen pure virtuele functies bevat en niet direct kan worden aangemaakt?

sobes.tech AI

Antwoord van AI

Ja, in C++ is het mogelijk om een klasse te definiëren die alleen pure virtuele functies bevat, en zo'n klasse kan niet rechtstreeks worden aangemaakt. Zo'n klasse wordt een abstracte klasse genoemd. Het dient als interface of basisklasse voor afgeleiden die alle pure virtuele functies moeten implementeren.

Voorbeeld:

class Interface {
public:
    virtual void doSomething() = 0; // pure virtuele functie
    virtual ~Interface() = default;
};

// Het is niet mogelijk om een object van Interface rechtstreeks te maken:
// Interface obj; // compilatiefout

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

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