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