Come posso essere sicuro di scrivere C ++ come se fosse scritto? [duplicare]

9

Oltre alle ovvie risposte di "usa g ++ invece di gcc, e cout invece di printf", come posso assicurarmi che il mio progetto giocattolo mi stia insegnando i paradigmi e i modelli C ++ appropriati?

Backstory: Non ho mai scritto una riga di C ++ al di là di Hello World, e ho scelto quello che dovrebbe essere un progetto di esempio diretto (anche se un po 'complicato) per aiutarmi ad imparare la lingua. Ho deciso che l'obiettivo che voglio concludere è un codificatore Huffman della CLI. Non deve competere con i moderni compressori in termini di velocità o efficienza, mi è sembrato un progetto che mi avrebbe aiutato a toccare molti aspetti della lingua contemporaneamente.

Quindi, prima di immergermi in questo progetto, quali sono alcune cose che dovrei tenere a mente? Molto di quello che farò è la ricerca online, e temo che molte esercitazioni siano C-in-C ++. Sto cercando risposte come: "se stai usando malloc, probabilmente stai facendo qualcosa di sbagliato" o "probabilmente dovresti usare boost o qualcosa di simile". Sto anche cercando suggerimenti come "se stessimo scrivendo questo, userei un template attorno a x".

    
posta Bryan Boettcher 08.11.2011 - 03:23
fonte

3 risposte

5

Non consiglierei la codifica di Huffman come progetto C ++, che si svolgerà per lo più a livello di bit, dove C ++ avrà davvero lo stesso aspetto di C. Nessuno crea una operazione binaria, né RAII lo fa.

Implementerei un interprete per una lingua piccola, magari Brainfuck o Lua, per esempio, o il tuo linguaggio piccolo o esoterico. Ciò comporterà un po 'di gestione della memoria e algoritmi standard e dovrebbe essere generalmente più istruttivo.

    
risposta data 08.11.2011 - 04:35
fonte
4

Impara a usare la libreria standard. Ci sono tonnellate di contenitori e algoritmi tra cui scegliere che sono efficienti e potenti.

Scrivo programmi di grandi dimensioni senza preoccuparmi affatto della gestione della memoria. Io uso il vettore per il contenitore, lo memorizzo in base al valore. Se devo usare new per creare un oggetto, lo avvolgo in un puntatore intelligente come unique_ptr o magari shared_ptr. Questi puliranno automaticamente i puntatori. Non usare mai delete.

Se hai accesso a un recente g ++ usa lo standard C ++ 11. Ha molte caratteristiche interessanti. "g ++ -std = c ++ 0x" userà il nuovo standard.

Divertiti: o)

    
risposta data 08.11.2011 - 03:42
fonte
0
  1. Usa nuovo / elimina invece di malloc / gratuito. -
  2. Utilizza i riferimenti ogni volta che è possibile su semplici puntatori.
  3. Usa iostream su stdio.
  4. Usa la classe stringa su char *
  5. NON utilizzare uint8_ etc tipo di tipi di dati codificati.
  6. Non utilizzare eccessivamente / abusare di modelli a meno che non vi sia un uso effettivo.
  7. Utilizza oggetti anziché metodi statici.
  8. Utilizza const anziché #defines dove possibile.
  9. Utilizza le eccezioni in modo efficace con try-throw-catch.

Ci sono molti suggerimenti che puoi ottenere da " Effective C ++ " di Scott Meyers, che viene restituito esclusivamente allo scopo di spiega esattamente perché molti costrutti C sono BAD da usare in C ++ come lo è anche se il compilatore lo accetta.

    
risposta data 08.11.2011 - 04:52
fonte

Leggi altre domande sui tag