C ++ per sviluppatori C #

22

Conosco C # abbastanza bene (autodidatta, tristemente) e ho bisogno di fare qualche programmazione in C ++ per un'applicazione Windows. Sono stato in grado di trovare un sacco di informazioni per gli sviluppatori C ++ che apprendono C # ma non sono stato in grado di trovare molto sull'apprendimento del C ++ quando già conosci C #. Qualcuno ha mai visto una buona sintesi delle basi?

MSDN ha un confronto ma non è molto approfondito.

Riesco a mettere insieme diverse fonti, ma ho pensato che qualcosa fosse là fuori - Non riesco proprio a trovarlo. Grazie per il tuo aiuto.

    
posta Mark Williams 02.01.2012 - 19:55
fonte

9 risposte

9

Questo thread sugli sviluppatori C ++ per Java è molto simile e dovrebbe essere utile, soprattutto il post di Mark Byer:

Read these books:

Probabilmente la cosa più importante da tenere a mente è capire la differenza nelle tecniche di gestione della memoria tra C # / Java e C ++ .

Uno dei miei profes proveniva da uno sfondo Java e ha insegnato un corso introduttivo in C ++ pensando che sarebbe stato un gioco da ragazzi. Niente di ciò che ha spiegato ha senso per nessuno. Aveva avuto perdite di memoria ovunque. La sua puntata aritmetica era terribile. Non è mai arrivato alla parte OOP del programma (grazie a Dio). Praticamente nulla di quello che ha dimostrato avrebbe compilato. Non capiva che char[] aveva bisogno di un sentinel %code% . Non finire come lui.

    
risposta data 03.01.2012 - 07:11
fonte
14

Sfortunatamente, non c'è molto di C ++ che sia di base, quindi non vorrei avere le tue speranze. Inoltre, c'è poco che tu sappia su C # che è anche trasferibile da remoto a C ++, quindi non mi aspetterei che esista materiale specifico che copra quell'angolo. Avrai bisogno di imparare da zero.

    
risposta data 02.01.2012 - 19:58
fonte
9

Non c'è una soluzione semplice per questo, il C ++ non è particolarmente difficile, ma non è facile per i principianti.

Consiglierei di leggere le basi della programmazione in C (per ottenere una base dei contenuti di basso livello che troverete), quindi apprendere l'STL, seguito da articoli di artisti come Scott Meyers. Ecco uno per iniziare, in quanto mostra come dovresti scrivere un C ++ moderno, rispetto a C-with-classes.

    
risposta data 02.01.2012 - 20:27
fonte
5

Non sono sicuro che se stai ancora cercando dei materiali, ho trovato questo articolo alcuni mesi fa. Non è un libro (solo 53 pagine). L'introduzione dice tutto:

This is a somewhat short guide to the important things to know if you are a C# programmer and find yourself needing or wanting to work in C++

link

E c'è anche un post di aggiornamento:

link

Buon apprendimento:)

    
risposta data 18.08.2012 - 00:49
fonte
4
  • Cerca la gestione della memoria. Ottieni una chiara idea di come puntatori e riferimenti funzionano in C ++ in contrasto con C #. Inoltre, RAII, gestione manuale della memoria e puntatori intelligenti finalmente.
  • Modelli e generici sembrano simili ma sono bestie diverse. Conoscere le parti interne di come funzionano i modelli.
  • Ci sono alcune differenze sintattiche minuscole ma accattivanti. Impara da loro.
  • Ti sei abituato a STL invece di .net BCL. Potresti perdere alcuni bei bit se hai una dipendenza da LINQ.
  • Ci sono alcune fondamentali differenze di design tra C ++ e C #. Quindi, non puoi semplicemente portare un'idea. Qualunque cosa tu abbia costruito con C ++, devi progettare da zero.
  • Goodluck
risposta data 04.01.2012 - 12:03
fonte
1

Penso che sia bene non trovare troppe esercitazioni in C # in C ++. Probabilmente potrebbero confondere il tuo cervello. È molto simile a provare a imparare a guidare una moto prima e poi a passare a una bicicletta (non un'anonimia del tutto appropriata ma si ottiene l'idea). È meglio per te prendere un nuovo libro su C ++. Poiché hai già familiarità con i concetti OOP, puoi saltare le lunghe introduzioni ai concetti OOP (sono pensati per le persone che migrano da C a C ++). Oppure vai direttamente per un libro di riferimento pensato per i livelli da principiante a intermedio o intermedio.

    
risposta data 03.01.2012 - 12:13
fonte
1

Consiglierei di passare a Rosetta Code e confrontare i due. Mentre sei lì, tieni a portata di mano un link di idiomi C ++ e prova a individuarli. Quindi trascorri del tempo sul dominio pointer / reference / memory / destructor. Dopo di che apprendi il preprocessore - può davvero essere tuo amico quando si tratta di nascondere i brutti, mi manca un po '. Infine, l'STL.

    
risposta data 15.01.2012 - 04:19
fonte
1

Quindi, circa un anno fa ero nella stessa barca di te: autodidatta c # dev che sentiva il bisogno di imparare il C ++. Certo, mi sono fermato e ho iniziato più volte. Al mio terzo tentativo, finalmente ci sono riuscito.

Ciò che è imperativo capire è che, in termini di metodologie C ++ e C #, probabilmente trascorrerai molto tempo a capire quali metodi di manipolazione dei dati tramite puntatori e riferimenti veramente significano, così come quando e come usarli date le circostanze.

La cosa bella di C ++ è che l'allocazione degli stack degli oggetti è abbastanza semplice per la maggior parte, e dovresti assegnare gli oggetti in questo modo se il tuo programma soddisfa i requisiti specificati in questo metodo. Altrimenti, ti affidi ai puntatori per velocità, efficienza e pulizia rapida. Vi consiglio di leggere questo: link in quanto vi darà un sacco di comprensione tecnica di come C ++ funziona sotto la cappa .

Lasciatemi fare un esempio:

In C ++ esiste questa implementazione del costruttore nota come "lista di inizializzazione", che differisce dall'inizializzazione dei membri della classe nel corpo di un costruttore. Perché? Perché a meno che il tipo inizializzato non sia primitivo, il compilatore creerà effettivamente copie multiple e inutili dell'oggetto creato durante l'allocazione nel corpo del ctor. Questo può potenzialmente ridurre le prestazioni, a seconda del compilatore e dei requisiti in scala dell'app.

Sapere cos'è un delegato? Bene, in C ++ è conosciuto come un puntatore della funzione . All'inizio questo linguaggio è piuttosto difficile da padroneggiare, ma se vuoi essere fantastico ... è assolutamente necessario.

C # è facile ... molto facile.

    
risposta data 18.08.2012 - 13:10
fonte
-2

Credimi, scegli un buon libro su C ++ (ce ne sono molti di più, fai una ricerca) e inizia a imparare ...

    
risposta data 03.01.2012 - 11:21
fonte

Leggi altre domande sui tag