2010-10-03 2 views
0

Каков размер абстрактного класса и почему мы не можем создавать объекты абстрактного класса?Каков размер абстрактного класса и почему мы не можем создавать объекты абстрактного класса?

+9

Вам нужно сделать две вещи. Во-первых, примите ответы на все вопросы, которые вы задали. Во-вторых, немного читайте об объектно-ориентированном программировании. :) Если вы знаете, ПОЧЕМУ вам нужен абстрактный класс, вы не будете спрашивать, почему вы не можете создать объект из него. В любом случае Посмотрите ответ, который написал Оли :) –

+2

Домашнее задание должно состояться через несколько часов, да или нет? – Piskvor

ответ

2

Потому что иначе это не было бы «абстрактным». Вся суть абстрактного базового класса состоит в том, что не имеет смысла создавать его; вместо этого нужно определить производные подклассы и вместо них создать экземпляр.

Абстрактные классы, следовательно, не имеют размера (но это не означает, что они не вносят вклад в размер его производных подклассов).

+0

Eh ... C++ абстрактные базы могут иметь состояние; возможно, некоторые языки запрещают это, но на C++ это может быть полезно. (Кроме того, C++ имеет абстрактные классы, кроме абстрактных баз, таких как типы признаков.) – Potatoswatter

+0

@Potatoswatter: Действительно, они могут иметь состояние (то есть переменные-члены). Но я хотел сказать, что вы не можете использовать 'sizeof' в абстрактном классе, который на самом деле оказывается неправильным! Корректирующий ответ теперь ... –

Смежные вопросы