Materiale breve sulla gestione dell'oggetto-vita C ++ e sul passaggio e sulla restituzione di valori / riferimenti [chiuso]

3

Mi chiedevo se qualcuno potesse indicare un post, un pdf o un estratto di un libro contenente le regole per i tempi di vita delle variabili C ++ e le best practice per il passaggio e la restituzione dei parametri di funzione. Cose come quando passare per valore e per riferimento, come condividere la proprietà, evitare copie non necessarie, ecc. Questo non è per un mio particolare problema, ho programmato in C ++ abbastanza a lungo da conoscere le regole per istinto, ma è qualcosa con cui molti nuovi arrivati si imbattono in questa lingua, e sarei lieto di indicarli a una cosa del genere.

    
posta dsign 16.11.2012 - 11:00
fonte

1 risposta

4

Ecco le regole in un post di riepilogo:

  1. pass-by-value + la copia è correlata + slicing
  2. pass-by-reference + polimorfismo è correlato
  3. il passaggio di proprietà è (di solito) eseguito tramite i puntatori.
  4. sizeof (T) è costante in fase di compilazione, facendo sì che tutti i tipi c ++ abbiano dimensioni in fase di compilazione
  5. condivisione della proprietà tramite shared_ptr
  6. non passare mai lo stile di proprietà
  7. l'escape dall'ambito locale della funzione all'ambito superiore richiede la copia dei dati, poiché l'archiviazione dei dati dell'ambito locale scompare al termine della chiamata della funzione.
  8. lo stack di chiamate è un percorso in un albero; la chiamata alla funzione si sta spostando su una sottostruttura
  9. I tipi definiti dall'utente sono speciali: l'ordine delle classi nel file di intestazione è importante per l'ereditarietà e la composizione: l'ambito della classe può essere legato a heap o stack
  10. La fabbrica polimorfica di solito usa il passaggio di proprietà; ma può anche essere implementato usando copia / clone e pass-by-reference.
  11. Evitare copie non necessarie è una cattiva pratica - la copia deve essere supportata per tutti i dati .
  12. Le interfacce supportano solo il passaggio della quantità di dati in fase di compilazione attraverso l'interfaccia. Tutti i dati devono essere divisi in piccoli pezzi; e la sua quantità dinamica richiede chiamate di funzioni ripetute all'interfaccia.
  13. I parametri del costruttore consentono di aggiungere parametri all'oggetto
  14. Tutta l'allocazione dell'heap negli array è al di fuori del sistema di tipi - non esiste un tipo che possa contenere quantità di memoria dinamica al suo interno.
risposta data 16.11.2012 - 15:18
fonte

Leggi altre domande sui tag