Sobes.tech
Junior — Middle

Կա՞ հնարավոր է C++-ում սահմանել դաս, որը պարունակում է միայն մաքուր վիրտուալ ֆունկցիաներ և որը հնարավոր չէ անմիջապես ստեղծել:

sobes.tech AI

Պատասխան AI-ից

Այո, C++-ում հնարավոր է սահմանել դաս, որը պարունակում է միայն մաքուր վիրտուալ ֆունկցիաներ, և այդպիսի դասը չի կարող անմիջապես ստեղծվել: Այդ դասը կոչվում է աբստրակտ դաս: Այն ծառայում է որպես ինտերֆեյս կամ հիմք դաս՝ ժառանգողների համար, ովքեր պետք է իրականացնել բոլոր մաքուր վիրտուալ ֆունկցիաները:

Օրինակ՝

class Interface {
public:
    virtual void doSomething() = 0; // մաքուր վիրտուալ ֆունկցիա
    virtual ~Interface() = default;
};

// Չի կարելի անմիջապես ստեղծել Interface օբյեկտը:
// Interface obj; // սխալ կոմպիլյացիա

class Implementation : public Interface {
public:
    void doSomething() override {
        // իրականացում
    }
};

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