Sobes.tech
Junior — Middle

C++ da faqat tozalangan virtual funktsiyalarni o'z ichiga olgan va to'g'ridan-to'g'ri yaratilmaydigan sinfni aniqlash mumkinmi?

sobes.tech AI

AIdan javob

Ha, 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();
}