Udostępnij za pośrednictwem


Zapraszamy ponownie do języka C++ (Modern C++)

C++ jest jednym z języków programowania najpopularniejszym na świecie.Programy dobrze napisane w języku C++ są szybkie i wydajne.Język jest bardziej elastyczne niż w innych językach, ponieważ umożliwia on tworzenie szerokiej gamy aplikacji — od zabawa i ekscytujące gry, wysoko wydajnych naukowy oprogramowaniem, sterowniki urządzeń, embedded programów i aplikacji klienta systemu Windows.Ponad 20 lat C++ został użyty do rozwiązywania problemów, takich jak te i wielu innych.Może nie wiedzę, którą jest ma złożony dowdy programowania C-style wczoraj coraz programistów języka C++ i ma donned zamiast nowoczesny C++.

Jeden z pierwotne wymagania w zakresie C++ był zgodność z językiem C.Od tego czasu, C++ powstał za pomocą kilku iteracji — C z klasy, a następnie pierwotnej specyfikacji języka C++, a następnie dużo kolejne rozszerzenia.C++ z powodu tego dziedzictwa jest często określany jako wieloparadygmatowy język programowania.W języku C++ można wykonać wyłącznie procedury programowania C-style zawierającą wskaźniki pierwotne, tablic, ciągi znaków zerem, struktur danych niestandardowych i innych funkcji, które mogą umożliwić doskonałą wydajność, ale można też zduplikować usterki i złożoności.Ponieważ programowania C stylu jest zawsze duże perils, takich jak te, jednym z celów założenia c++ było utworzenie programy jednocześnie bezpieczną i łatwiejsze do zapisu, należy rozszerzyć i obsługa.Wcześniej w języku C++ wdrożyła paradygmatów programowania, takich jak programowanie zorientowane obiektowo.W tym zakresie funkcje zostały dodane do języku, wraz z bardzo przetestowane standardowe biblioteki struktury danych i algorytmów.Jest to jednak wprowadzonych nowoczesnych styl C++ możliwe przez.

Nowoczesny C++ kładzie nacisk na:

  • Zakres opartego na stosie zamiast stosu lub statyczny zakresie globalnym.

  • Automatyczne typu wnioskowania zamiast jawnie określony typ nazwy.

  • Wskaźniki inteligentnego zamiast wskaźniki raw.

  • std::stringi std::wstring typów (zobacz <string>) zamiast pierwotne char[] tablic.

  • Biblioteka standardowych szablonów kontenerów (STL), takich jak vector, list, i map zamiast pierwotne tablic lub kontenerów niestandardowych.Zobacz <vector>, <list> i <map>.

  • Algorytmy STL zamiast ręcznie kodowanych lista.

  • Wyjątki do raportu i dojście warunków błędu.

  • Wątek odstępy między komunikację z wykorzystaniem STL wolny blokady std::atomic<> (zobacz <atomic>) zamiast inne mechanizmy komunikacji między wątku.

  • Wbudowany funkcje lambda zamiast funkcji małych zaimplementowana osobno.

  • Na podstawie zakresu dla pętli można zapisać bardziej niezawodną pętle, które działają z tablicami, kontenerów STL i Środowisko wykonawcze systemu Windows w postaci for ( for-range-declaration : expression ).Jest to część obsługi języka podstawowego.Aby uzyskać więcej informacji, zobacz Range-based for — instrukcja (C++).

Również powstał samego języka C++.Porównaj następujące wstawki kodu.Ta pokazuje, jak używać w języku C++:

// circle and shape are user-defined types
circle* p = new circle( 42 ); 
vector<shape*> v = load_shapes();

for( vector<circle*>::iterator i = v.begin(); i != v.end(); ++i ) {
    if( *i && **i == *p )
        cout << **i << “ is a match\n”;
}

for( vector<circle*>::iterator i = v.begin();
        i != v.end(); ++i ) {
    delete *i; // not exception safe
}

delete p;

Oto, jak jedną czynność jest realizowane w nowoczesnym C++:

#include <memory>
#include <vector>
// ...
// circle and shape are user-defined types
auto p = make_shared<circle>( 42 );
vector<shared_ptr<shape>> v = load_shapes();

for_each( begin(v), end(v), [&]( const shared_ptr<shape>& s ) {
    if( s && *s == *p )
        cout << *s << " is a match\n";
} );

W nowoczesnym C++ nie trzeba użyć nowego/usuwania lub obsługi, ponieważ zamiast niej używać łącza inteligentnego jawnego wyjątków.Przy użyciu auto wpisz potrącenia i funkcji lambda, można wpisać kod szybciej, zwiększył go i lepiej ją zrozumieć.I for_each jest czyszcząca usprawniają używanie komputera i mniej podatne na błędy niepożądanych niż for pętli.Kwestię wraz z programem minimalne wierszy kodu można użyć do pisania aplikacji.I wybierz kod bezpieczny wyjątku i bezpieczną pamięci i kodami nie alokacji/dezalokacji lub błędu do rozwiązania.

Nowoczesny C++ zawiera dwa rodzaje polimorfizmu: kompilacji, za pomocą szablonów i czasie wykonywania, za pomocą dziedziczenia i wirtualizacji.Możesz łączyć dwa rodzaje polimorfizm w celu wspaniałe.Szablon STL shared_ptr używa wewnętrznego metod wirtualnych do wykonania jego usunięcia wydaje łatwe typu.Ale nie nadmiernie wirtualizacji dla polimorfizm gdy szablon jest lepszy.Szablony mogą być bardzo zaawansowanym.

Jeśli jest już wkrótce będzie C++ w innym języku, zwłaszcza z języków zarządzanych, w których większość typów typów odniesienia i bardzo mała są typy wartości, należy sprawdzić, czy klasy C++ są typy wartości domyślne.Ale możesz określić je jako typy odwołań do włączenia polimorficzny zachowanie, która obsługuje programowanie zorientowane obiektowo.Warto perspektywy: typy wartości są więcej informacji na temat pamięci i kontroli układu, typy referencyjne są więcej informacji na temat klasy bazowe i wirtualnych funkcje do obsługi polimorfizm.Typy wartości są domyślnie copyable — mają konstruktora kopiowania i operatorem przypisania kopiowania.Po określeniu typu odwołania Wybierz klasę bez copyable — Wyłącz konstruktora kopiowania i operator przypisania kopiowania — i użyj destruktora wirtualnego, który obsługuje polimorfizm.Typy wartości są również dotyczące zawartości, które podczas kopiowania ich, zapewniają dwa niezależne wartości, które można zmodyfikować osobno.Ale typy referencyjne dotyczące tożsamości — co rodzaj obiektu jest — i z tego powodu są czasami nazywane polimorficzny typów.

C++ występują odrodzenia powodu power king ponownie.W językach Java, jak i C# są dobre, gdy wydajności dla programistów jest ważna, ale występują ich ograniczeń podczas zasilania i wydajności są nadrzędne.Wysoka wydajność i możliwości, zwłaszcza na urządzenia, które mają ograniczone sprzętu nic nie pobije nowoczesny C++.

Nie tylko języka nowoczesnych, narzędzi programistycznych są zbyt.Visual Studiopowoduje, że żadna część cyklu tworzenia aplikacji niezawodną i wydajne.Obejmuje on narzędzia zarządzania cyklem życia aplikacji (ALM), ulepszenia środowiska IDE, takich jak technologia IntelliSense, mechanizmów przyjazne dla narzędzia, takich jak XAML i tworzenie, debugowanie i inne narzędzia.

Artykuły w tej części dokumentacji można znaleźć wysokiego poziomu wytyczne i najlepsze rozwiązania w zakresie najważniejsze funkcje i techniki programistyczne dla zapisu nowoczesnych programy w języku C++.

Aby uzyskać więcej informacji, zobacz artykuł StackOverflow idioms C++, jakie są przestarzałe w C ++ 11

Zobacz też

Informacje

Wyrażenia lambda w języku C++

Inne zasoby

Materiały referencyjne dotyczące języka C++

Odwołanie do standardowej biblioteki C++