Sobes.tech
Junior — Middle

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

sobes.tech AI

Atbilde no AI

Jā, C++ var definēt klasi, kas satur tikai tīras virtuālās funkcijas, un tādu klasi nevar tieši izveidot. Šāda klase saucas abstrakta klase. Tā kalpo kā saskarne vai pamata klase mantotājiem, kuriem jāīsteno visas tīras virtuālās funkcijas.

Piemērs:

class Interface {
public:
    virtual void doSomething() = 0; // tīra virtuālā funkcija
    virtual ~Interface() = default;
};

// Nav iespējams tieši izveidot Interface objektu:
// Interface obj; // kompilācijas kļūda

class Implementation : public Interface {
public:
    void doSomething() override {
        // īstenošana
    }
};

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