Sto imparando C++ e sto provando a scrivere un buon codice. Attualmente sto usando un lof di flag di compilazione, come ad esempioQuale flag dovrei usare per imporre un buon stile C++ 11?
-Wextra -Wall -pedantic -Werror -Wfatal-errors -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wfloat-equal -Wshadow -Wpointer-arith -Weffc++ -ansi -Wstrict-aliasing
ho appena appreso che le parole chiave new
e delete
non deve essere utilizzato più in C++ 11. Tuttavia, non ho alcun avviso quando li uso.
Esistono alcuni flag da utilizzare per garantire un buon stile C++ 11?
* Ho appena appreso che le parole chiave new e delete non dovrebbero più essere utilizzate in C++ 11. * Dove l'hai letto? Sei sicuro di aver capito bene? Sei scoraggiato nell'usare puntatori grezzi in cui dovrai preoccuparti di liberare una risorsa in seguito. Non puoi davvero evitare di usare 'new' e' delete' e non c'è motivo di farlo. Si può nascondere usando 'new' dietro una chiamata come' std :: make_unique() 'o' std :: make_shared() ', ma dietro le quinte quelle sono chiamate appena spostate a' new'. – Mario
@Mario: il C++ moderno non ha davvero bisogno di usare 'delete' spesso, molte applicazioni potrebbero essere meglio servite senza mai chiamarlo direttamente (e raramente chiamando' new'). Hai ragione a dubitare che il problema dell'OP sia puro dogma, ma in questo momento "cancella" nel codice dell'applicazione è una bandiera rossa. Tuttavia, con un numero così elevato di codici di libreria nelle intestazioni nel moderno C++, c'è anche il fatto che 'delete' può apparire al compilatore anche se l'utente non lo ha scritto. Questa è la cosa complicata degli avvertimenti: la maggior parte dei compilatori non discrimina tra il "tuo" codice e il "loro" codice. –
@ Mario il punto è che * tu * non dovresti mai usarli, alcune librerie sì. – o11c