Sobes.tech
Junior — Middle

Kas C++-s ir iespējams definēt klasi, kas satur tikai tīras virtuālas funkcijas un kuru nav iespējams tieši izveidot?

sobes.tech AI

Vastus AI-lt

Jah, C++-s on võimalik määratleda klass, mis sisaldab ainult puhtaid virtuaalseid funktsioone, ning sellist klassi ei saa otse luua. Sellist klassi nimetatakse abstraktseks klassiks. See toimib liidese või alusklassina pärijatele, kes peavad rakendama kõiki puhtaid virtuaalseid funktsioone.

Näide:

class Interface {
public:
    virtual void doSomething() = 0; // puhas virtuaalne funktsioon
    virtual ~Interface() = default;
};

// Ei ole võimalik otse luua Interface objekti:
// Interface obj; // kompileerimisviga

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

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