Существует ли «Конструктор абстрактного класса»?
Предположим, что может существовать абстрактный конструктор классов. Как и любой другой класс. По умолчанию (если вы не объявляете «настраиваемый» конструктор или у вас нет объектов-членов, которые не имеют конструктора по умолчанию), существуют два неявно определенных: конструктор по умолчанию и конструктор копирования .
Таким образом, в декларации, как это:
struct abstract_class {
virtual void func() = 0;
}
вы до сих пор конструкторами.
Мы не можем создать объект абстрактного класса.
Да. Для наиболее распространенного определения абстрактного класса, это правда. Если класс имеет чистые виртуальные функции, он считается абстрактным классом и, конечно же, его невозможно создать.
И конструкторы создают новые экземпляры любого класса, который называется объектом.
Я бы перефразировал это так: вы строите объекты типа класса через их конструктор. И да, в C++ объект (из §1.8/1):
Объект является областью хранения.
И все. Например:
int x = 0;
также является объектом. Объект не обязательно означает тип класса.
Существует ли объект абстрактного класса? ты пробовал? –
что я прочитал, абстрактный класс не может иметь объект. – Priyanka
Напишите конструктор и посмотрите, согласен ли его компилятор. –