Assolutamente. In questi giorni tre cose che di solito si trovano nella lezione 2 dovrebbero spostarsi molto, molto più tardi:
- stringhe come matrici di char *, i metodi strlen, strxxx e così via
- matrici in generale e aritmetica del puntatore
- elimina ciò che sei nuovo, elimina [] ciò che sei nuovo [] e persino i distruttori
Queste cose che di solito si trovano nella lezione 99 dovrebbero spostarsi molto, molto prima
- i template come cose da usare (scrivi, non tanto)
- std :: string
- std :: shared_ptr < >
- std :: vector < & gt ;, iteratori, altre raccolte
Il puntatore raw di Evey deve essere immediatamente assegnato a un wrapper di puntatore intelligente (vorrei iniziare con shared, e considerarlo univoco in seguito, poiché richiede la spiegazione dei riferimenti std :: move e rvalue). Fare ciò renderà l'apprendimento C ++ molto simile all'apprendimento di Java o C #, dove si impara la libreria contemporaneamente alla lingua. Ci vorrà anche molto lavoro di memoria e lascerà le persone meno preoccupate dei trucchi.
Lavorerei anche lambda nell'immagine la prima volta che volevamo iterare attraverso una raccolta e fare qualcosa per ogni elemento.
Dichiarazione di non responsabilità: sto scrivendo un corso C ++ per Pluralsight in questo momento e utilizzando questo approccio. L'ultimo modulo è "capire il codice di altre persone" ed è qui che inserirò le cose confuse come le stringhe char *, la gestione manuale della memoria, l'aritmetica dei puntatori e così via.
Aggiornamento: alcune persone hanno chiesto perché l'esistenza di C ++ 0x ispira insegnamenti che potrebbero essere stati insegnati con C ++ 03. Penso che sia un numero di cose:
- puntatori veramente intelligenti, che sono amichevoli nella raccolta, eliminano la necessità di cose come "una serie di puntatori Employee" che ci hanno indotto a ricorrere sempre al nuovo / delete, al puntatore aritmetico ecc.
- auto toglie il dolore delle dichiarazioni iteratore
- lambda fa foreaching qualcosa che una persona normale farebbe
- anche qualcosa di banale come l'analisi di
>>
elimina correttamente il trucco che sarebbe presente quando si dichiarano alcuni modelli di modelli
- e così via
Per come la vedo io, ci sono cose che potrebbero essere cambiate nel modo in cui stavamo insegnando C ++ qualche tempo fa, ma alcuni di noi si sono trattenuti perché avevamo ancora bisogno della vecchia scuola per un ripiego o perché insegnava solo ha coinvolto molte conoscenze arcane.