This documentation is archived and is not being maintained.

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.

The following sample generates C4534:

// C4534.cpp
// compile with: /W3 /clr /WX
#using <mscorlib.dll>

__value class MyClass
{
public:
   int ii;
   MyClass(int i = 9)
   {   // C4534, will not be the default constructor
      i++;
   }
};

int main()
{
   MyClass *xx = new MyClass;
   xx->ii = 0;
}
Show: