I would like to make copy of SubClass object in BaseClass constructor. I need that the following code execute correctly.
class BaseClass{ BaseClass() {}
It's not possible. A constructor of class A gives you an instance of A, no way to circumvent this. Why not instantiate the subclass explicitly?
Another possibility might involve a static factory method like:
public static BaseClass create(BaseClass input) { // return BaseClass or subclass }