C++ and explicit constructors