c++-faq

Dlaczego muszę uzyskać dostęp do członków klasy bazowej szablonu za pomocą tego wskaźnika?

Gdyby poniższe klasy nie były szablonami, mógłbym po prostu mieć x w klasie derived. Jednak z poniższym kodem, ja muszę użyć ... lt;T> { public: int f() { return this->x; } }; int main() { derived<int> d; d.f(); return 0; }

Undefined behavior and sequence points

Potraktuj ten temat jako kontynuację następującego tematu: Poprzednia odsłona nieokreślone zachowanie i punkty sekwencji ... return *this; } Index & inc() { state++; return *this; } };

Inicjalizacja konstruktora-kolejność oceny listy

Mam konstruktor, który pobiera kilka argumentów. Założyłem, że zostały zbudowane w podanej kolejności, ale w jednym przypadk ... { public: A(OtherClass o, string x, int y) : a_(o), b_(a_, x, y) { } OtherClass a_; AnotherClass b_; };

Jak usunąć duplikację kodu pomiędzy podobnymi funkcjami const i non-const member?

Załóżmy, że mam następujący class X gdzie chcę zwrócić dostęp do wewnętrznego członka: class Z { // details }; class X ... powodować problemy konserwacyjne dla długich funkcji ze złożoną logiką . Czy istnieje sposób, aby uniknąć powielania kodu?

Jak napisać zgodne ze standardem ISO C++ niestandardowe operatory new i delete?

Jak napisać operatory ISO C++ zgodne ze standardem custom new i delete? Jest to kontynuacja Overloading new and deletew niez ... y wpadli na pomysł.)_ * Uwaga: odpowiedź jest oparta na naukach Scotta Meyersa Bardziej efektywny C++ i Standard ISO C++.*

Dlaczego nie powinienem # include?

Zamieściłem pytanie z moim kodem, którego jedyną dyrektywą #include było: #include <bits/stdc++.h> Mój nauczyciel kazał mi to zrobić, ale w sekcji komentarzy zostałem poinformowany, że nie powinienem. Dlaczego?

Dlaczego źle jest używać std:: auto ptr< > ze standardowymi kontenerami?

Dlaczego używanie std::auto_ptr<> ze standardowymi pojemnikami jest złe?

Jakie są zalety używania nullptr?

Ten fragment kodu koncepcyjnie robi to samo dla trzech wskaźników (bezpieczna inicjalizacja wskaźnika): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; I jakie są zalety przypisywania wskaźników nullptr nad przypisywaniem im wartości NULL lub 0?

Czy słowo kluczowe "override" jest tylko sprawdzeniem nadpisanej metody wirtualnej?

O ile dobrze rozumiem, wprowadzenie override słowa kluczowego w C++11 jest niczym więcej niż sprawdzeniem, aby upewnić się, że implementowana funkcja jest overrideing z virtual funkcji w klasie bazowej. To wszystko?

Czy const oznacza thread-safe W C++11?

Słyszałem, że const oznacza thread-safe W C++11 . To prawda? Czy to znaczy, że constjest teraz odpowiednikiem Java's synchronized? Czy kończą sięsłowa kluczowe ?

Dlaczego w nagłówku znajdują się funkcje wbudowane w C++?

NB to nie jest pytanie o to, jak korzystać z funkcji inline lub jak one działają, więcej, Dlaczego są one wykonywane tak, jak ... >C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe : fatal error LNK1120: 1 unresolved externals

Przeciążenie konstruktora kopiującego i operatora = w C++: czy możliwa jest wspólna funkcja?

Ponieważ Konstruktor kopiujący MyClass(const MyClass&); And an = operator overload MyClass& operator = (const M ... am kod, ten sam parametr i różnią się tylko po powrocie, czy możliwe jest posiadanie wspólnej funkcji dla nich obu do użycia?

Dlaczego zawsze powinienem włączyć ostrzeżenia kompilatora?

Często słyszę, że przy kompilowaniu programów C i C++ powinienem "zawsze włączać ostrzeżenia kompilatora". Dlaczego jest to k ... e? Jak mam to zrobić? Czasami też słyszę, że powinienem "traktować ostrzeżenia jak błędy". A Powinienem? Jak mam to zrobić?

Czy idiom safe-bool jest przestarzały w C++11?

W C++11 idiom safe-bool jest dość przestarzały, ponieważ można go zastąpić prostym.]} explicit operator bool() const; Zgod ... .4 [except.spec] p2) Czy nasze założenie w tytule jest poprawne? Mam nadzieję, że nie pominęliśmy żadnych potencjalnych wad.

Dlaczego `std:: move 'nazywa się' STD:: move'?

Funkcja C++11 std::move(x) tak naprawdę niczego nie porusza. To tylko rzut do wartości R. Dlaczego to zrobiono? Czy to nie wprowadza w błąd?

Jaka jest właściwa deklaracja main w C++?

Pytania Jaka jest prawidłowa sygnatura funkcji main W C++? Jaki jest prawidłowy typ zwracania i co oznacza zwracanie war ... ich znaczenia? Czy ten system jest specyficzny? Czy te zasady zmieniły się w czasie? Co się stanie, jeśli je naruszę?

Domyślny konstruktor z pustymi nawiasami

Czy Jest jakiś dobry powód, dla którego pusty zestaw okrągłych nawiasów (nawiasów) nie jest prawidłowy do wywołania domyślneg ... or Wydaje mi się, że wpisuję "()" automatycznie za każdym razem. Jest jakiś dobry powód, dla którego to nie jest dozwolone?

Jak sprawić, aby IOStream działał lepiej?

Większość użytkowników C++, którzy nauczyli się C wolą używać printf / scanf rodzina funkcji nawet gdy kodują w C++. Chociaż ... ale nie udało mi się zlokalizować wielu szczegółów na jej temat. Poprzednie odniesienia wydają się być martwymi odnośnikami.

Które manipulatory iomanip są "lepkie"?

Ostatnio miałem problem z utworzeniem stringstream ze względu na to, że błędnie założyłem, że std::setw() wpłynie na strumień ... raźnie dokumentuje to zachowanie? Moja dokumentacja dostawcy (MS Visual Studio 2005) nie wydaje się tego wyraźnie pokazywać.

Przeciążanie operatorów dostępu członka ->,.* (C++)

Rozumiem większość operatorów przeciążających, z wyjątkiem operatorów dostępu dla członków ->, .*, ->* itd. W szczegól ... esz potrzebował zarówno wersji const, jak i non-const. Czy operatorzy dostępu dla członków wymagają wersji const i non-const?