Why not? Because some other piece of code has a pointer to the Object, viz. the code that called the Constructor. It MUST have a reference to the Object otherwise it couldn’t pass it to the Constructor?
Goodbye, Object Oriented Programming
Charles Scalfani

Why it’s not safe? Not sure I understand whole “passed by reference” argument. You can’t access private (encapsulated) data in both cases, when objects are passed by reference or value. Or what am I missing?