Sto imparando C++ al momento, C++ Primer plus. Ma mi sono semplicemente sentito come controllare il sito Web cplusplus e saltare un po 'in avanti verso la gestione dei file.'Inizializzazione bretelle'. (C++)
Conosco praticamente le basi della gestione dei file provenienti da java, php, visual basic. Ma mi sono imbattuto in una linea piuttosto strana.
ostream os(&fb);
fb rappresenta un filebuf. Io proprio non capisco la sintassi di questo, ma posso capire che è lo stesso di:
ostream os = &fb;
Ma non ho mai letto su questo modo di inizializzazione delle variabili.
Quindi mi chiedo. Sono solo privo di senso e mi manca una funzione utile per tutto il tempo? Questo modo di inizializzare è solo vecchio? È qualcosa di diverso?
Grazie in anticipo.
Grazie per questo ottimo riferimento e risposta rapida :) –
Dovresti fornire la risposta qui, in questo post. Il link potrebbe essere inattivo quando qualcun altro ha bisogno di rispondere a questa domanda, e hey, se vuoi il rappresentante, dovresti pubblicare la risposta effettiva. È comune, quindi, cortesia. – jalf
Parafrasato leggermente dal secondo link: 'ostream os = &fb;' è inizializzazione della copia, e 'os' è sempre inizializzato usando il copyctor di' ostream'. (Il "=" è solo un salto di sintassi da C; operator = non viene mai chiamato.) Il compilatore è effettivamente consentito (ma non richiesto) per ottimizzare la costruzione della copia in questo tipo di situazione. Se lo ottimizza, il copy ctor deve essere ancora accessibile. ** Linea guida: ** Preferisco usare il modulo 'ostream os (& fb)'. Funziona sempre dove 'ostream os = & fb' funziona e ha altri vantaggi (ad esempio, può richiedere più parametri). –