Często widzę w kodach C i C ++ następującą konwencję: some_type val; val = something; some_type *ptr = NULL; ptr = &something_else; zamiast some_type val = something; some_type *ptr = &something_else; Początkowo założyłem, że był to nawyk, który pozostał z czasów, kiedy trzeba było zadeklarować wszystkie zmienne lokalne na początku …
Uczyłem się trochę C ++ i często muszę zwracać duże obiekty z funkcji tworzonych w ramach funkcji. Wiem, że istnieje przejście przez referencję, zwrócenie wskaźnika i zwrócenie rozwiązań typu referencyjnego, ale przeczytałem również, że kompilatory C ++ (i standard C ++) pozwalają na optymalizację zwracanych wartości, co pozwala uniknąć kopiowania …
Słyszę o współczesnej popularności C ++ i kilku rozmowach na temat migracji z powrotem do C ++ z C # lub innych języków podobnych do C. Wiem o funkcjach C ++ 11, ale chciałbym usłyszeć twoje doświadczenia, zwłaszcza od programistów, którzy przeprowadzili migrację z C # do C ++. Co …
Czy w językach, w których rozróżnia się pliki „źródłowe” i „nagłówkowe” (głównie C i C ++), lepiej udokumentować funkcje w pliku nagłówkowym: ( sprowadzony z CCAN ) /** * time_now - return the current time * * Example: * printf("Now is %lu seconds since epoch\n", (long)time_now().tv_sec); */ struct timeval time_now(void); …
Jako długoletni programista C #, ostatnio przyjechałem, aby dowiedzieć się więcej o zaletach pozyskiwania zasobów to inicjalizacja (RAII). W szczególności odkryłem, że idiom C #: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } ma odpowiednik C ++: { DbConnection dbConn(connStr); // do stuff with dbConn …
Czasami Java przewyższa C ++ w testach porównawczych. Oczywiście czasami C ++ osiąga lepsze wyniki. Zobacz następujące linki: http://keithlea.com/javabench/ http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/ http://blog.cfelde.com/2010/06/c-vs-java-performance/ Ale jak to w ogóle możliwe? Dziwi mnie, że interpretacja kodu bajtowego może być szybsza niż skompilowany język. Czy ktoś może wyjaśnić? Dzięki!
Istnieje kilka języków programowania, dla których istnieje system zarządzania pakietami: CTAN dla TeX CPAN dla Perla Pip i jajka dla Pythona Maven dla Java Cabal dla Haskell Klejnoty dla Ruby npm dla NodeJS altana do frontendu Javascript i CSS nuget dla C # kompozytor dla PHP Czy istnieją inne języki …
Czasami napotykasz sytuację, w której musisz rozszerzyć / ulepszyć istniejący kod. Widzisz, że stary kod jest bardzo ubogi, ale również trudny do rozszerzenia i wymaga czasu. Czy warto zastąpić go nowoczesnym kodem? Jakiś czas temu podobało mi się podejście lean, ale teraz wydaje mi się, że lepiej poświęcić wiele optymalizacji …
Próbuję zrozumieć różnicę między językami proceduralnymi, takimi jak C, a językami obiektowymi, takimi jak C ++. Nigdy nie korzystałem z C ++, ale rozmawiałem z przyjaciółmi o tym, jak je rozróżnić. Powiedziano mi, że C ++ ma koncepcje obiektowe, a także tryby publiczne i prywatne do definiowania zmiennych: rzeczy, których …
Stroustrup mówi: „Nie od razu wymyśl wyjątkową bazę dla wszystkich swoich klas (klasę Object). Zazwyczaj możesz zrobić to lepiej bez wielu / większości klas”. (Czwarta edycja języka programowania C ++, Sec 1.3.4) Dlaczego generalnie klasa podstawowa jest na ogół złym pomysłem i kiedy warto go stworzyć?
W samouczku Pythona można przeczytać, że oryginalna implementacja Pythona jest w C; Z drugiej strony implementacja Pythona, napisana w C, (...) Jestem bardzo ciekawy, dlaczego Python został napisany w C, a nie w C ++? Chciałbym poznać uzasadnienie tej decyzji, a odpowiedź powinna być poparta odniesieniami historycznymi (a nie opartymi …
Chociaż zgadzam się, że łapanie ... bez ponownego rzucania jest rzeczywiście złe, uważam jednak, że przy użyciu takich konstrukcji: try { // Stuff } catch (...) { // Some cleanup throw; } Jest akceptowalny w przypadkach, w których RAII nie ma zastosowania . (Proszę, nie pytaj ... nie wszyscy w …
Wiele pytań i odpowiedzi na stronach C / C ++, w szczególności lub pośrednio, omawia problemy z wydajnością mikro (takie jak narzut funkcji pośredniej vs. bezpośredniej vs. wbudowanej) lub przy użyciu algorytmu O (N 2 ) vs O (N log N) na lista 100 przedmiotów. Zawsze piszę bez obawy o …
C ++ 17 wprowadza [[nodiscard]]atrybut, który pozwala programistom oznaczać funkcje w taki sposób, że kompilator generuje ostrzeżenie, jeśli zwracany obiekt zostanie odrzucony przez program wywołujący; ten sam atrybut można dodać do całego typu klasy. Przeczytałem o motywacji tej funkcji w oryginalnej propozycji i wiem, że C ++ 20 doda atrybut …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.