When you say "overloading operator" I assume you mean operator=.
When the compiler sees Try q=e;, it's free to implement it as either Try q; q=e; (default constructor followed by assignment operator) or Try q(e); (copy constructor). Since you haven't defined a default constructor it can't do the former so it must do the latter.
Note that giving the compiler this flexibility is the reason why a default constructor and assignment operator must be symantically equivalent to a copy constructor.
When the compiler sees Try q=e;, it's free to implement it as either Try q; q=e; (default constructor followed by assignment operator) or Try q(e); (copy constructor).
That's incorrect, Try q=e; is not an assignment expression, just like int * p; is not a multiplication. It can only call the constructor.