Compiler Warning (level 3) C4534


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Warning (level 3) C4534.

constructor' will not be a default constructor for class 'class' due to the default argument

An unmanaged class can have a constructor with parameters that have default values and the compiler will use this as the default constructor. A class marked with the value keyword will not use a constructor with default values for its parameters as a default constructor.

For more information, see Classes and Structs.

The following sample generates C4534:

// C4534.cpp  
// compile with: /W3 /clr /WX  
value class MyClass {  
   int ii;  
   MyClass(int i = 9) {   // C4534, will not be the default constructor  
int main() {  
   MyClass ^ xx = gcnew MyClass;  
   xx->ii = 0;