Pytania otagowane jako c++

Pytania na temat C ++, skompilowanego, uniwersalnego języka programowania o typie statycznym, o dowolnej formie, z wieloma paradygmatami.

6
Funkcja nieumyślnie unieważnia parametr referencyjny - co poszło nie tak?
Dzisiaj odkryliśmy przyczynę paskudnego błędu, który zdarzał się sporadycznie tylko na niektórych platformach. Nasz kod wyglądał następująco: class Foo { map<string,string> m; void A(const string& key) { m.erase(key); cout << "Erased: " << key; // oops } void B() { while (!m.empty()) { auto toDelete = m.begin(); A(toDelete->first); } } …
54 c++ 

10
Dlaczego słowo „końcowe” miałoby być przydatne?
Wygląda na to, że Java ma moc deklarowania klas niepochodzących od wieków, a teraz C ++ też to ma. Jednak w świetle zasady Open / Close w SOLID, dlaczego miałoby to być przydatne? Dla mnie finalsłowo kluczowe brzmi jak friend- jest legalne, ale jeśli go używasz, najprawdopodobniej projekt jest nieprawidłowy. …
54 java  c++  solid  final 

5
Dlaczego inteligentne wskaźniki liczące referencje są tak popularne?
Jak widzę, inteligentne wskaźniki są szeroko stosowane w wielu rzeczywistych projektach C ++. Chociaż niektóre inteligentne wskaźniki są oczywiście korzystne dla obsługi RAII i przeniesienia własności, istnieje również tendencja do domyślnego korzystania ze wskaźników wspólnych jako sposobu „wyrzucania elementów bezużytecznych” , aby programiści nie musieli tak dużo myśleć o alokacji …

8
Co dzieje się ze śmieciami w C ++?
Java ma automatyczny GC, który co jakiś czas zatrzymuje świat, ale dba o śmieci na stosie. Teraz aplikacje C / C ++ nie mają tych zawieszeń STW, ich użycie pamięci również nie rośnie nieskończenie. Jak osiąga się to zachowanie? Jak zajmowane są martwe przedmioty?

3
Dlaczego specyfikacje wyjątków są złe?
Ponad 10 lat temu w szkole uczyli cię używania specyfikatorów wyjątków. Ponieważ moje doświadczenie jest jednym z nich, programiści Torvaldish C, którzy uparcie unikają C ++, chyba że są do tego zmuszeni, trafiam tylko do C ++ sporadycznie, a kiedy to robię, nadal używam specyfikatorów wyjątków, ponieważ tego się nauczono. …

11
Dlaczego C ++ ma „niezdefiniowane zachowanie” (UB), a inne języki, takie jak C # lub Java, nie?
W tym artykule Przepełnienie stosu wymieniono dość kompleksową listę sytuacji, w których specyfikacja języka C / C ++ deklaruje, że jest „niezdefiniowanym zachowaniem”. Chcę jednak zrozumieć, dlaczego inne współczesne języki, takie jak C # lub Java, nie mają pojęcia „niezdefiniowane zachowanie”. Czy to oznacza, że ​​projektant kompilatora może kontrolować wszystkie …

3
C ++ silnie typedef typedef
Próbowałem wymyślić sposób na zadeklarowanie silnie typowanych typów maszynopisów, aby złapać pewną klasę błędów na etapie kompilacji. Często zdarza się, że wpisuję int w kilku typach id lub wektorze do pozycji lub prędkości: typedef int EntityID; typedef int ModelID; typedef Vector3 Position; typedef Vector3 Velocity; Może to uczynić cel kodu …
49 c++  c++11  type-safety 

5
Dlaczego wszystkie funkcje <algorytmu> zajmują tylko zakresy, a nie kontenery?
Istnieje wiele przydatnych funkcji &lt;algorithm&gt;, ale wszystkie działają na „sekwencjach” - parach iteratorów. Na przykład, jeśli mam kontener i lubię na nim biegać std::accumulate, muszę napisać: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Gdy wszystko, co zamierzam zrobić, to: int sum = std::accumulate(myContainer, 0); Co jest w …

9
Wyjaśnienie, w jaki sposób „Powiedz, nie pytaj” jest uważane za dobrego OO
Ten blog został opublikowany w Hacker News z kilkoma pozytywnymi opiniami. Pochodząc z C ++, większość tych przykładów wydaje się sprzeczna z tym, czego mnie nauczono. Tak jak w przykładzie 2: Zły: def check_for_overheating(system_monitor) if system_monitor.temperature &gt; 100 system_monitor.sound_alarms end end kontra dobry: system_monitor.check_for_overheating class SystemMonitor def check_for_overheating if temperature …


2
Czy biblioteki zawierające tylko nagłówki są bardziej wydajne?
Założenia Jedną z zalet bibliotek tylko nagłówkowych dla C ++ jest to, że nie trzeba ich oddzielnie kompilować. W C i C ++ inlinema sens tylko wtedy, gdy funkcja jest zdefiniowana w pliku nagłówkowym *. Tradycyjnie w C używany jest układ .c / .h, w którym nagłówek reprezentuje minimalny publiczny …
48 c++  c  libraries 

8
Kiedy NIE należy używać wirtualnych niszczycieli?
Wierzyłem, że wielokrotnie szukałem wirtualnych destruktorów, większość wspomina o celu wirtualnych destruktorów i dlaczego potrzebujesz wirtualnych destruktorów. Myślę też, że w większości przypadków destruktory muszą być wirtualne. Zatem pytanie brzmi: dlaczego c ++ domyślnie nie ustawia wirtualnych wszystkich destruktorów? lub w innych pytaniach: Kiedy NIE muszę używać wirtualnych niszczycieli? W …


11
Co mogę zrobić, jeśli osoba przeprowadzająca wywiad nie zna odpowiedzi na swoje pytanie? [Zamknięte]
Wczoraj miałem straszne doświadczenie w wywiadzie. Ankieter zapytał mnie o czystą funkcję wirtualną. Powiedziałem: Może lub nie może mieć definicji w klasie bazowej, ale klasy pochodne powinny zapewniać definicję, chyba że chcą także być klasą abstrakcyjną. Ale ankieter ciągle pytał: „Czy czysty wirtualny może mieć definicję !!! ???” ... Powiedziałem …
48 c++  interview 

3
Programowanie Androida przy użyciu C i C ++ [zamknięte]
Jestem programistą C, C ++. Jestem zainteresowany rozwojem mobilnym. Chcę wiedzieć, jak mogę tworzyć aplikacje na Androida przy użyciu C i C ++, przeczytałem , że dostarczają one zestaw dla programistów C, C ++, ale nie ma on wszystkich funkcji jak w przypadku zestawu Java. Czy powinienem wybrać zestaw programistyczny …
47 c++  c  android 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.