Добро пожаловать в C++ (современные C++)
C C-++ является одним из наиболее широко используемых языков программирования в мире.Грамотно сконструированные программ на языках C, C-++ и быстрее эффективные.Язык является более гибким, чем другие языки, поскольку его можно использовать для создания широкий спектр приложение- от интересной и яркий игр, в высокопроизводительному научному программному обеспечению, к драйверам устройств, внедрял приложения программ и клиента Windows.Для более 20 лет C C-++ использовался для решения подобных проблем и многих других.Действия, которые могут не знать, что увеличение количества программистов C-++ C складывало вверх неряшливому программированию в стиле вчера надеть современное C и C-++ вместо.
Одно из начальных требований для C, C-++ обратной совместимостью с языком C.С этого момента C, C-++ эволюционировало через несколько итераций - C с классами, затем исходный спецификации языка C, C-++ и затем много последовательных усовершенствований.Вследствие этого наследие C, C-++ часто называется язык программирования с парадигмы.В C, C-++ доступны только процедурным программирование в стиле, которое содержит необработанные указатели, массивы объединения завершенных символьные строки, структуры пользовательских данных и других функций, которые могут содержать большую производительность, но можно также инициализировать ошибки и сложности.Поскольку программирование в стиле чревато с опасностями подобных, одна из основывая целей для C, C-++, программы и типобезопасной и упрощает записи, расширяет и поддерживает.Вскоре C, C-++ обняло парадигмы программирования, например объектно-ориентированного программирования.С годами функции, добавленные к языку вместе с стандартными с наивысшими испытанными библиотеками структур данных и алгоритмов.Эти дополнения, произведенные современный стиль C к возможным.
Современное C C-++ подчеркивает:
Область стека, вместо кучи или статической глобальной области.
Автоматическое определение типа вместо имен в отношении типа.
Интеллектуального указателя вместо необработанные указателей.
типы std::string и std::wstring (см. <string>) вместо необработанные массивов char[].
контейнеров STL) любят Библиотека стандартных шаблонов ( vector, list и map вместо необработанные массивов или пользовательских контейнеров.См. разделы <vector>, <list> и <map>.
Алгоритмы STL вместо одного закодированных вручную.
Исключения, уведомления и обработки условий ошибки.
Свободное от блокировку взаимодействие между потоками с помощью STL std::atomic<> (см. <atomic>) вместо других механизмов взаимодействия между потоками.
Встроенным лямбда-функции вместо небольших функций, реализованных отдельно.
Диапазон- зависимости для циклов, чтобы создавать более сложные циклы, которые работают с массивами, контейнерами STL и коллекциями Среда выполнения Windows в форме for (for-range-declaration :expression ).Это основной частью языковой поддержки.Для получения дополнительной информации см. Основанное на диапазоне выражение for (C++).
Сам язык C C-++ также особенность.Сравните следующие фрагменты кода.Это, показано, как использовать действия, чтобы включить в C, 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;
Описание то же действие выполняется в современном C 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";
} );
В современном C, C-++ не следует использовать новую и удаление или явную обработку исключений, поскольку можно использовать вместо него интеллектуального указателяПри использовании вычет и Функция lambda типа auto, можно написать код быстрее, затяните его и лучше понять его.И атрибута for_each представляет собой более простой, и более устойчив к непреднамеренным ошибкам, чем цикл for.Котельный листа можно использовать с минимальными строками кода для создания приложения.И в том, что можно сделать код исключения безопасности и об безопасный и не имеют ни выделение и освобождение или коды ошибок, чтобы завершить обработку.
Современное C C-++ включает 2 типа полиморфизма: время компиляции с помощью шаблонов и среду выполнения, посредством наследования и виртуализации.Можно задать 2 типа полиморфизма, используемым эффекту.Шаблон shared_ptr STL использует внутренние виртуальные методы для выполнения его на первый взгляд, без усилий стирания типа.Но не злоупотребите виртуализацию для полиморфизма, если шаблон лучшим вариантом.Шаблоны могут быть очень мощны.
Если приходите в C, C-++ из другого языка, особенно из управляемого языка, в котором большинство типов очень мало ссылочные типы и типы значений, известно, что классы C-++ C типы значения по умолчанию.Однако можно указать их как ссылочные типы для включения полиморфный расширение функциональности с поддержкой объектно-ориентированного программирования.Перспектива является полезной: типы значений сведения о памяти и элемент управления макетом, ссылочные типы сведения о базовых классах и функциях виртуального для поддержки полиморфизм.По умолчанию типы значений copyable- каждая из них имеет конструктор копий и оператор присваивания копий.При определении ссылочный тип, внести не-copyable- отключением назначение класса конструктор копий и копирования оператор- и используйте виртуальный деструктор, который поддерживает полиморфизм.Типы значений также о содержимом, когда они копируются, дают 2, независимых значений, можно изменять отдельно.Но ссылочные типы о идентификатор-, какой тип объекта его быть- поэтому иногда называют полиморфных типов.
C, C-++ ренессанс, поскольку степень король снова.Языки, например java и C-# хорошо подходят при программиста важна производительность, но они отображают их ограничения при возможности и производительность первостепенны.Для повышения эффективности и высокой степени особенно для устройств с ограниченным оборудование, никаких бьет современное C C-++.
Не только язык современн, средства разработки, слишком.Visual Studio выполняет все части цикла разработки надежности и эффективным.Он включает средства (ALM) управления жизненным циклом приложения, усовершенствования интегрированной среды разработки, как IntelliSense, совместимые средство механизмы как XAML и построения, отладки и многих других средств.
Статьи в этом разделе документации содержатся высокого уровня правила и рекомендации наиболее важные функции и методы для записи современные программ на языках C, C-++.
Время существования объектов и управление ресурсами (самомоднейшее C++)
Pimpl для инкапсуляции время компиляции (самомоднейшего C++)