Uczę się C++ i próbuję napisać dobry kod. Jestem obecnie za pomocą lof flag kompilatora, takich jakJaką flagę należy zastosować, aby wymusić dobry styl C++ 11?
-Wextra -Wall -pedantic -Werror -Wfatal-errors -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wfloat-equal -Wshadow -Wpointer-arith -Weffc++ -ansi -Wstrict-aliasing
Właśnie dowiedziałem się, że słowa kluczowe new
i delete
nie powinien być stosowany już w C++ 11. Jednak nie mam żadnych ostrzeżeń, kiedy ich używam.
Czy są jakieś flagi, które należy zastosować, aby zapewnić dobry styl C++ 11?
* Właśnie dowiedziałem się, że słowa kluczowe new i delete nie powinny być już używane w C++ 11. * Gdzie to przeczytałeś? Jesteś pewien, że to zrozumiałeś? Odradza ci się używać surowych wskazówek, w których będziesz musiał się martwić uwolnieniem ressource później. Nie można tak naprawdę unikać użycia 'new' i' delete' i nie ma powodu, aby to robić. Możesz ukryć, używając 'new' za wywołaniem, np.' Std :: make_unique() 'lub' std :: make_shared() ', ale za kulisami są to po prostu zawijane wywołania' new'. – Mario
@Mario: nowoczesne C++ tak naprawdę nie musi często używać 'delete', wiele aplikacji byłoby najlepiej obsłużonych przez nie wywoływanie go bezpośrednio (i rzadko nazywanie' new'). Masz rację, kwestionując, czy problem z PO to czysty dogmat, ale "usuń" w kodzie aplikacji to czerwona flaga. Jednak przy tak dużej ilości kodu biblioteki w nagłówkach we współczesnym C++, istnieje również fakt, że 'delete' może pojawić się w kompilatorze nawet wtedy, gdy użytkownik go nie napisał. To jest najtrudniejsza rzecz w ostrzeżeniach - większość kompilatorów nie rozróżnia "twojego" kodu od "swojego" kodu. –
@Mario chodzi o to, że * ty * nigdy nie powinieneś ich używać, niektóre biblioteki. – o11c