Jakich idiomów C++ powinni używać Programiści C++? [zamknięte]

Jakie idiomy C++ powinni znać Programiści C++?

Przez idiomy C++, mam na myśli wzorce projektowe lub sposób robienia pewnych rzeczy, które mają zastosowanie tylko do C++ lub bardziej odpowiednie dla C++ niż większość innych języków.

Dlaczego warto używać idiomów i co idiomy osiągają?

Author: Robert Harvey, 2009-11-19

7 answers

Oto jedna Lista . Gdybym miał wybrać parę, mógłbym wybrać ciekawie powtarzający się wzór szablonu lub Wirtualne Contstructors.

 27
Author: Duck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-18 22:38:26

Zdecydowanie najważniejszym "wzorcem" do nauki i wiedzy, który jest (prawie) unikalny dla C++ jest RAII (pozyskiwanie zasobów jest inicjalizacją).

Edit: (aby odpowiedzieć na dodatkowe pytanie edytowane na pytanie). Używasz RAII przede wszystkim do (pół)automatyzacji zarządzania zasobami. Najbardziej oczywistym zastosowaniem jest uwolnienie zasobów należących do obiektów, gdy obiekty będące ich własnością wykraczają poza zakres, np. uwolnienie pamięci lub zamknięcie plików.

 55
Author: Jerry Coffin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-19 04:54:51

PIMPL, aka P ointer to IMPL ementation ?

 10
Author: Dmitry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-01 08:05:00

Metaprogramowanie szablonu. Jest to świetne, ponieważ jest to w zasadzie pisanie kaczek w czasie kompilacji, więc uzyskujesz większość elastyczności pisania kaczek z szybkością pisania statycznego.

 8
Author: dsimcha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-19 00:00:45

Jeśli chcesz jak najlepiej wykorzystać STL, Iteratory i funktory/obiekty funkcyjne są niezbędnymi idiomami. Użycie iteratorów również pośrednio opiera się na idiomie "półotwarty zakres".

 7
Author: the_mandrill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-18 22:37:36

Wykorzystanie silnego typowania i poprawności const jest również niezwykle pomocne.

Zakazuję również domyślnych konstruktorów kopiujących i operatorów przydziałów. Faktycznie wykraczam poza to, ale te są najczęstsze. Myślę, że życie byłoby łatwiejsze, gdyby nie były ukryte.

 6
Author: justin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-14 00:28:55

RAII, krowa, pimpl, prawo demeter( Nie wiem, czy można je zakwalifikować jako idiom), cechy typu i zasady. (Krowa i prawo demeter nie ograniczają się jednak do C++)

 5
Author: BostonLogan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-19 00:05:09