1) No, myobject( 10 ) calls operator() with i=10.
A constructor call has the syntax ClassOrStuctName( parameters )
operator() is called via the syntax VariableName( parameters )
2) The only difference between struct and class in C++ is default
access in structs is public and in classes is private. Otherwise
they are absolutely identical.
3) Therefore, yes, you can overload operators on structs.