Firstly, no your calls are not the same.
Person oPerson = new Person(); // This object is about to be discarded by...
oPerson = MyFunction(); // ... Overwriting the reference to it here
At this point the first Person
you created can be cleaned up by the garbage collector.
If you have default initialization you ought to do that in a constructor for Person
.