How to: Declare Override Specifiers in Native Compilations (C++/CLI)

 

For the latest documentation on Visual Studio 2017, see Visual Studio 2017 Documentation.

sealed, abstract, and override are available in compilations that do not use /ZW or /clr.

System_CAPS_ICON_note.jpg Note

The ISO C++11 Standard language has the override identifier and the final identifier, and both are supported in Visual Studio Use final instead of sealed in code that is meant to be compiled as native-only.

Description

The following example shows that sealed is valid in native compilations.

Code

  
      // sealed_native_keyword.cpp  
#include <stdio.h>  
__interface I1 {  
   virtual void f();  
   virtual void g();  
};  
  
class X : public I1 {  
public:  
   virtual void g() sealed {}  
};  
  
class Y : public X {  
public:  
  
   // the following override generates a compiler error  
   virtual void g() {}   // C3248 X::g is sealed!  
};  

Description

The next example shows that override is valid in native compilations.

Code

// override_native_keyword.cpp  
#include <stdio.h>  
__interface I1 {  
   virtual void f();  
};  
  
class X : public I1 {  
public:  
   virtual void f() override {}   // OK  
   virtual void g() override {}   // C3668 I1::g does not exist  
};  

Description

This example shows that abstract is valid in native compilations.

Code

// abstract_native_keyword.cpp  
class X abstract {};  
  
int main() {  
   X * MyX = new X;   // C3622 cannot instantiate abstract class  
}  

Override Specifiers

Show: