Avoid illegal identifier _S in generated C++ code
Fix bug in cpp code generation for default constructor when first
field doesn't need initialising.

Added a test case for this.