Io e un mio collega ha avuto un dibattito sulla castratoC++ Strano costruttore di copia di default senza costruttore
Pt pt;
e
Pt pt = Pt();
sono equivalenti. Sospettavo che nel secondo caso si potesse chiamare il compito di copia, ma a quanto pare non è così.
Mentre correvamo il nostro piccolo esperimento ho deciso di provare un po 'strano, che il mio collega pensava non sarebbe nemmeno compilare:
//here the compiler calls a copy constructor and doesn't call the default constructor prior to that
// O_o
Pt pt = pt;
Ecco un esempio di lavoro: http://ideone.com/XmJSz7
Quindi, la domanda è - ciò che accade in:
Pt pt = pt;
"* Avevo il sospetto che nel secondo caso si potesse chiamare l'assegnazione della copia, ma come risulta non è il caso. *" Sospetto che tu stia concludendo dal fatto che qualcosa non è accaduto che non potrebbe accadere. Questo è un ragionamento non valido. Se cammino per la strada senza guardare in entrambi i modi e non viene investito da un'auto, vuol dire che qualcuno che ha detto che avrei potuto essere colpito da una macchina non era corretto? –
Punto valido. Suggerite che Pt pt = Pt(); potresti chiamare il costruttore della copia in qualche caso? Se sì - potresti fare un esempio? –
@Vorren - su questo 'Pt pt = Pt()', ho aggiornato la mia risposta. –