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