overload constructor c++