Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
This topic applies only to version 1 of Managed Extensions for C++. This syntax should only be used to maintain version 1 code. See abstract (C++) for information on using the equivalent functionality in the new syntax.
Declares a managed class that cannot be instantiated directly.
__abstract class-specifier
__abstract struct-specifier
Remarks
The __abstract keyword declares that the target class can only be used as a base class of another class. Applying __abstract to a class or structure does not imply that the result is a __gc class or __gc structure.
Differing from the C++ notion of an abstract base class, a class with the __abstract keyword can define its member functions.
Note
The __abstract keyword is not allowed when used with the __value or __sealed keyword and redundant when used with the __interface keyword.
Example
In the following example, the Derived
class is derived from an abstract base class (Base
). Instantiation is then attempted on both, but only Derived
is successful.
// 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();
}