Ответ 1
Нет!
Поверхностно они похожи (кроме того, что абстрактные классы имеют определения, тогда как неполные типы не имеют):
[n3690: 3.9/5]:
[..] Объекты не должны быть определены как неполные.
[n3690: 10.4/2]:
Абстрактный класс - это класс, который может использоваться только как базовый класс какого-либо другого класса; не могут быть созданы объекты абстрактного класса, кроме как субобъекты производного от него класса. [..]
[n3690: 10.4/3]:
Абстрактный класс не должен использоваться как тип параметра, как возвращаемый тип функции или как тип явного преобразования. Указатели и ссылки на абстрактный класс могут быть объявлены.
Однако стандарт действительно дает понять, что эти два понятия не связаны:
[n3690: 3.9/5]:
Класс, который был объявлен, но не определен, тип перечисления в определенных контекстах (7.2) или массив неизвестного размера или неполного типа элемента, - это не полностью определенный тип объекта. Неполно определенные типы объектов, а типы void являются неполными типами (3.9.1). Объекты не должны быть определены как неполные.
Ваш абстрактный класс имеет определение и поэтому не может считаться неполным.
N3690 - это проект Комитета С++ 14.