__abstract
Примечание
Этот раздел относится только к управляемым расширениям для C++ версии 1.Приведенный здесь синтаксис должен использоваться только для обслуживания кода версия 1.Сведения об использовании аналогичных функциональных возможностей в новом синтаксисе см. в разделе abstract (Visual C++).
Объявляет управляемый класс, не допускающий непосредственное создание экземпляров.
__abstract class-specifier
__abstract struct-specifier
Заметки
Ключевое слово __abstract объявляет, что целевой класс может использоваться только в качестве базового класса для другого класса. Применение модификатора __abstract к классу или структуре не означает, что результат является классом __gc или структурой __gc.
В отличие от понятия базового класса abstract в языке C++, класс с ключевым словом __abstract может определять свои функции-члены.
Примечание
Ключевое слово __abstract не допускается при использовании с ключевым словом __value или __sealed и является избыточным при использовании с ключевым словом __interface.
Пример
В следующем примере класс Derived является производным от абстрактного базового класса (Base). Затем предпринимается попытка создания экземпляров обоих классов, которая заканчивается успешно только для класса Derived.
// keyword__abstract.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
__abstract __gc class Base {
int BaseFunction() {
return 0;
}
};
__gc class Derived: public Base {};
int main() {
Base* MyBase = new Base(); // C3622 can't BAse is abstract
Derived* MyDerived = new Derived();
}