Salve a tutti!
E' da qualche settimana che ho cominciato a mettere le mani sul C++, avendo conoscenze solo di C.
Quindi alcune cose fatico ancora a comprenderle.

Vi posto un esercizietto idiota, ma che mi dà da riflettere...

codice:
class C {
private:
  int x;
public:
  C(int n=0) {x=n;}
  C F(C obj) {C r; r.x=obj.x+x; return r; }
  ....
};

int main() {
  C x, y(1), z(2); const C v(2);
  z=x.F(y);
  ...
}
Bene, primo dubbio.
L'unico costruttore dichiarato nella classe è ad un parametro (con argomento di default), quindi non dovrei più avere a disposizione il costruttore standard. Giusto?
Non capisco perché la dichiarazione C x nel main sia corretta.
Non dovrei poterla fare solo se ho a disposizione un costruttore di default, o comunque standard?
Probabilmente sto facendo confusione...

Ultima cosa: l'istruzione nel main x.F(y) cosa fa esattamente?
Applica il metodo F sull'oggetto di invocazione x. Non capisco però che ruolo svolga poi x nell'esecuzione del metodo.
Qualcuno sa spiegarmi, in parole povere, cosa accade con quell'istruzione?

Grazie