Стандарт С++: перевод, комментарии, примеры

Save this PDF as:
 WORD  PNG  TXT  JPG

Размер: px
Начинать показ со страницы:

Download "Стандарт С++: перевод, комментарии, примеры"

Транскрипт

1

2 Стандарт С++: перевод, комментарии, примеры Перевод и аннотации под редакцией кандидата физико-математических наук Е.А.Зуева, кандидата технических наук А.А.Чупринова 2016 Москва 2

3 УДК ББК З-93 ISBN З-93 Е.А. Зуев А.А. Чупринов Стандарт С++: перевод, комментарии, примеры. Москва: ООО «ВАШ ФОРМАТ» г. 888 с. Книга представляет собой аннотированный перевод на русский язык проекта очередного Международного Стандарта языка программирования С++, официальное принятие которого ожидается в 2017 году. Стандарт содержит полное, строгое и недвусмысленное определение языка С++ и служит безусловным первичным источником информации о языке. В перевод включены все новые понятия языка, существенно расширяющие его возможности, изобразительную силу и сферы применения, включая лямбда-выражения, наследование конструкторов, новые виды инициализации объектов и многое другое. Перевод выполнен ведущими сотрудниками компании Интерстрон (Москва) и включает ядро языка (главы с 1-ой по 16-ю), а также две вводные главы «библиотечной части» предварительного стандарта (17 и 18). Помимо текста самого предварительного стандарта, в перевод включен ряд комментариев, поясняющих некоторые важные аспекты языка, которые могут представить известные трудности при чтении. Книга ориентирована на профессиональных программистов, использующих язык С++ для создания программ научного, технического и промышленного назначения. ISBN УДК ББК

4 От редакторов перевода Идея создания данной книги аннотированного перевода на русский язык проекта очередного Международного Стандарта С++ появилась в компании «Интерстрон» в далеком 2006 году. Появление этой идеи было вызвано не какими-то амбициозными побуждениями, а насущной необходимостью. Флагманский продукт компании «Интерстрон» компилятор переднего плана языка С++. Заметим, что это полностью отечественная разработка, в которой нет ни единой строки, взятой из каких-либо других софтверных проектов. Компилятор защищён Свидетельством (Роспатентом) от 4 июля 2001 г. За последние годы мы успешно портировали его на несколько моделей отечественных микропроцессоров. В процессе каждого очередного портирования компилятора на тот или иной новый процессор, созданный каким-либо российским дизайн-центром (а зачастую речь шла не только о компиляторе, а о целом пакете средств разработки ПО, см., например, обязательно вставал вопрос о правильности реализации генератора кода для этого процессора и соответствия его функционирования правилам и требованиям Стандарта. И вот тут на первый план и выходил Стандарт языка С++. Нередко, «особая» трактовка Стандарта (а он существовал только на языке оригинала) представителями компании-заказчика приводила к долгим и бурным дискуссиям, что никак не способствовало спокойной и эффективной работе в условиях ограниченного времени, выделенного на реализацию. Все, кто принимал когда-либо участие в государственных конкурсных работах, нас поймут: из полутора лет, отведенных на разработку, после проведения конкурса, подписания контракта с головным исполнителем и контрагентами, на саму разработку реально оставалось не более десяти-двенадцати месяцев. А это крайне мало для реализации такого серьёзного проекта, как создание пакета средств разработки. Заметим, что помимо традиционных задач, стоящих перед подобными комплексами разработки ПО, на них, как правило, возлагались дополнительные требования, связанные с обеспечением информационной безопасности при разработке специального ПО для аппаратных платформ отечественного производства. Таким образом, для «Интерстрона» наличие профессионального перевода Международного Стандарта С++, принимаемого заказчиком, жизненная необходимость, основа плодотворного сотрудничества с разработчиками процессоров и залог успешного выполнения проектов. Начиная работать над переводом, мы не представляли, что такое погоня за Международным Комитетом по стандартизации (ISO), который с периодичностью в 7-10 месяцев выпускает очередной проект стандарта: в язык добавляются новые возможности, которые необходимо не только представить в виде текста, примеров и тестов, но и внести в наш компилятор. В итоге, через 10 лет после начала проекта, мы представляем российским программистам данный фолиант, который, как мы надеемся, поможет им создавать более эффективный программный код и более эффективные программные системы. Мы будем рады сознавать, что результат нашего труда принесет пользу не только нам, но и многим другим разработчикам ПО. С уважением к программистскому сообществу России Е. Зуев, А. Чупринов 4

5 Предисловие Эта книга представляет собой аннотированный перевод проекта очередного Международного Стандарта языка программирования С++. Процесс выработки стандарта к настоящему моменту (февраль 2016 года) еще не завершен, однако нынешнее состояние предварительной (рабочей) версии стандарта позволяет сделать вывод о том, что многие существенные нововведения в язык уже зафиксированы, и окончательная версия Стандарта (официальное принятие которого запланировано на 2017 год) будет отличаться от данной весьма незначительно. Непосредственным источником для данного перевода послужил документ под названием Working Draft, Standard for Programming Language C++ от 22 мая 2015 года (номер документа n4527). Этот публично-доступный документ расположен на веб-сайте рабочей группы WG21 по языку С++ комитета ISO по электронному адресу /n4527.pdf. Настоящий перевод включает ядро языка (главы с 1-ой по 16-ю), а также две вводные главы «библиотечной части» предварительного стандарта (17 и 18). Текст перевода снабжен двумя приложениями. Приложение А содержит сводку синтаксических правил языка С++ (это перевод соответствующего приложения Grammar Summary оригинального текста). Приложение B представляет собой глоссарий основных понятий языка С++. Для каждого понятия приводится оригинальное название, русский перевод, краткое объяснение, а также ссылка на место в тексте перевода, в котором данное понятие впервые вводится. Помимо текста самого Стандарта, в перевод включен ряд комментариев, поясняющих некоторые важные аспекты языка, которые, по мнению переводчика, могут представить известные трудности при чтении. 5

6 ОГЛАВЛЕНИЕ 1. ОБЩИЕ ПОЛОЖЕНИЯ GENERAL Сфера действия Scope Нормативные ссылки Normative references Определения Definitions Доступ Access Аргумент Argument Аргумент Argument Аргумент Argument Аргумент Argument Условно-поддерживаемое Conditionally-supported Диагностическое сообщение Diagnostic message Динамический тип Dynamic type Динамический тип Dynamic type Неправильная программа Ill-formed program Поведение, определяемое реализацией Implementation-defined behavior Ограничения реализации Implementation limits Поведение, определяемое местной спецификой Locale-specific behavior Многобайтовый символ Multibyte character Параметр Parameter Параметр Parameter Параметр Parameter Сигнатура Signature Сигнатура Signature Сигнатура Signature Сигнатура Signature Сигнатура Signature Сигнатура Signature Статический тип Static type Неопределенное поведение Undefined behavior Неспецифицированное поведение Unspecified behavior Правильная программа Well-formed program Соответствие реализации настоящему Стандарту Implementation compliance Структура данного Международного Стандарта Structure of this International Standard Форма спецификации синтаксиса Syntax notation Модель памяти С++ The C++ memory model Объектная модель С++ The C++ object model Выполнение программы Program execution Многопотоковое выполнение и совместный доступ к данным Multi-threaded executions and data races Благодарности Acknowledgments ЛЕКСИЧЕСКИЕ СОГЛАШЕНИЯ LEXICAL CONVENTIONS Раздельная трансляция Separate translation 46 6

7 2.2. Фазы трансляции Phases of translation Множества символов Character sets 50 Триграфы Trigraph sequences Лексемы препроцессора Preprocessing tokens Альтернативные лексемы Alternative tokens Лексемы Tokens Комментарии Comments Имена заголовочных файлов Header names Числа препроцессора Preprocessing numbers Идентификаторы Identifiers Служебные слова Keywords Операции и пунктуаторы Operators and punctuators Литералы Literals Виды литералов Kinds of literals Целые литералы Integer literals Символьные литералы Character literals Плавающие литералы Floating literals Строковые литералы String literals Булевские литералы Boolean literals Указательные литералы Pointer literals Литералы, определяемые пользователем User-defined literals ОСНОВНЫЕ ПОНЯТИЯ BASIC CONCEPTS Объявления и описания Declarations and definitions Правило одного описания One definition rule Область действия Scope Области объявлений и области действия Declarative regions and scopes Точка объявления Point of declaration Область действия блока Block scope Область действия прототипа функции Function prototype scope Область действия функции Function scope Область действия пространства имен Namespace scope Область действия класса Class scope Область действия перечисления Enumeration scope Область действия параметра шаблона Template Parameter Scope Скрытие имен Name hiding Поиск имен Name lookup Поиск неквалифицированного имени Unqualified name lookup Поиск имен, зависимых от аргументов Argument-dependent name lookup Поиск квалифицированного имени Qualified name lookup Члены классов Class members Члены пространств имен Namespace members Уточненные спецификаторы типов Elaborated type specifiers 112 7

8 Доступ к члену класса Class member access Директивы-использования и псевдонимы пространств имен Using-directives and namespace aliases Программа и связывание Program and linkage Старт и завершение программы Start and termination Функция main main function Инициализация нелокальных переменных Initialization of non-local variables Завершение Termination Класс памяти Storage duration Статический класс памяти Static storage duration Потоковый класс памяти Thread storage duration Автоматический класс памяти Automatic storage duration Динамический класс памяти Dynamic storage duration Функции отведения памяти Allocation functions Функции освобождения памяти Deallocation functions Безопасно-производные указатели Safely-derived pointers Класс памяти подобъектов Duration of sub-objects Время жизни объекта Object lifetime Типы Types Базовые типы Fundamental types Составные типы Compound types CV-квалификаторы CV-qualifiers L-значения и r-значения Lvalues and rvalues Выравнивание Alignment СТАНДАРНЫЕ ПРЕОБРАЗОВАНИЯ STANDARD CONVERSIONS Преобразование l-значения к r-значению Lvalue-to-rvalue conversion Преобразование массива к указателю Array-to-pointer conversion Преобразование функции к указателю Function-to-pointer conversion Преобразования квалификации Qualification conversions Целочисленные расширения Integral promotions Расширение плавающих типов Floating point promotion Целочисленные преобразования Integral conversions Преобразования плавающих типов Floating point conversions Преобразования плавающих-к-целочисленным Floating-integral conversions Преобразования указателей Pointer conversions Преобразования указателей на члены Pointer to member conversions Преобразования булевских Boolean conversions Ранг целого преобразования Integer conversion rank 164 8

9 5. ВЫРАЖЕНИЯ EXPRESSIONS Первичные выражения Primary expressions Общие положения General Лямбда-выражения Lambda expressions Выражения свертки Fold expressions Постфиксные выражения Postfix expressions Индексирование Subscripting Вызов функции Function call Явное преобразование типа (функциональная нотация) Explicit type conversion (functional notation) Вызов псевдодеструктора Pseudo destructor call Доступ к члену класса Class member access Инкремент и декремент Increment and decrement Динамическое приведение Dynamic cast Идентификация типа Type identification Статическое приведение Static cast Реинтерпретирующее приведение Reinterpret cast Константное приведение Const cast Унарные выражения Unary expressions Унарные операции Unary operators Инкремент и декремент Increment and decrement Операция sizeof Sizeof Операция new New Операция delete Delete Операция alignof Alignof Операция noexcept Noexcept Явное преобразование типа (нотация приведения) Explicit type conversion (cast notation) Операции над указателями на члены классов Pointer-to-member operators Мультипликативные операции Multiplicative operators Аддитивные операции Additive operators Операции сдвига Shift operators Операции отношения Relational operators Операции проверки равенства Equality operators Побитовая операция И Bitwise AND operator Побитовая операция исключающее ИЛИ Bitwise exclusive OR operator Побитовая операция включающее ИЛИ Bitwise inclusive OR operator Логическая операция И Logical AND operator Операция логическое ИЛИ Logical OR operator Условная операция Conditional operator Возбуждение исключительной ситуации Throwing an exception 239 9

10 5.18. Операции присваивания и составного присваивания Assignment and compound assignment operators Операция запятая Comma operator Константные выражения Constant expressions ОПЕРАТОРЫ STATEMENTS Помеченный оператор Labeled statement Оператор-выражение Expression statement Составной оператор или блок Compound statement or block Операторы выбора Selection statements Оператор if The if statement Оператор switch The switch statement Операторы повторения Iteration statements Оператор while The while statement Оператор do The do statement Оператор for The for statement Оператор for с диапазоном The range-based for statement Операторы переходов Jump statements Оператор break The break statements Оператор continue The continue statement Оператор return The return statement Оператор goto The goto statement Оператор-объявление Declaration statement Разрешение неоднозначностей Ambiguity resolution ОБЪЯВЛЕНИЯ DECLARATIONS Спецификаторы Specifiers Спецификаторы класса памяти Storage class specifiers Спецификаторы функции Function specifiers Спецификатор typedef The typedef specifier Спецификатор friend The friend specifier Спецификатор constexpr The constexpr specifier Спецификаторы типа Type specifiers Cv-квалификаторы The cv-qualifiers Простые спецификаторы типа Simple type specifiers Уточненные спецификаторы типа Elaborated type specifiers Спецификатор auto auto specifier Объявления перечислений Enumeration declatations Пространства имен Namespaces Описание пространства имен Namespace definition Неименованные пространства имен Unnamed namespaces Описания членов пространства имен Namespace member definitions Псевдоним пространства имен Namespace alias Объявление использования The using declaration Директива использования Using directive

11 7.4. Asm-объявление The asm declaration Спецификации связывания Linkage specifications Атрибуты Attributes Синтаксис и семантика атрибутов Attribute syntax and semantics Спецификатор выравнивания Alignment specifier Атрибут noreturn Noreturn attribute Атрибут переноса зависимости Carries dependency attribute Атрибут deprecated Deprecated attribute ОПИСАТЕЛИ DECLARATORS Имена типов Type names Разрешение неоднозначностей Ambiguity resolution Смысл описателей Meaning of declarators Указатели Pointers Ссылки References Указатели на члены Pointers to members Массивы Arrays Функции Functions Аргументы по умолчанию Default arguments Описания функций Function definitions Общие положения In general Явно-умалчиваемые функции Explicitly-defaulted functions Описания удаленных функций Deleted definitions Инициализаторы Initializers Агрегаты Aggregates Массивы символов Character arrays Ссылки References Инициализация-списком List-initialization КЛАССЫ CLASSES Имена классов Class names Члены класса Class members Функции-члены Member functions Нестатические функции-члены Non-static member functions Указатель this The this pointer Статические члены Static members Статические функции-члены Static member functions Статические данные-члены Static data members Объединения Unions Битовые поля Bit-fields Объявления вложенных классов Nested class declarations Объявления локальных классов Local class declarations

12 9.9. Имена вложенных типов Nested type names ПРОИЗВОДНЫЕ КЛАССЫ DERIVED CLASSES Множественные базовые классы Multiple base classes Поиск имени члена класса Member name lookup Виртуальные функции Virtual functions Абстрактные классы Abstract classes УПРАВЛЕНИЕ ДОСТУПОМ К ЧЛЕНАМ КЛАССА MEMBER ACCESS CONTROL Спецификаторы доступа Access specifiers Доступность базовых классов и членов базовых классов Accessibility of base classes and base class members Друзья Friends Доступ к защищенному члену Protected member access Доступ к виртуальным функциям Access to virtual functions Множественный доступ Multiple access Вложенные классы Nested classes СПЕЦИАЛЬНЫЕ ФУНКЦИИ-ЧЛЕНЫ SPECIAL MEMBER FUNCTIONS Конструкторы Constructors Временные объекты Temporary objects Преобразования Conversions Преобразование посредством конструктора Conversion by constructor Функции преобразования Conversion functions Деструкторы Destructors Свободная память Free store Инициализация Initialization Явная инициализация Explicit initialization Инициализация баз и членов Initializing bases and members Конструирование и разрушение Construction and destruction Копирование и перемещение объектов классовых типов Copying and moving class objects Наследование конструкторов Inheriting constructors СОВМЕСТНОЕ ИСПОЛЬЗОВАНИЕ OVERLOADING Объявления, которые могут совместно использоваться Overloadable declarations

13 13.2. Совпадение объявлений Declaration matching Разрешение совместного использования Overload resolution Функции-кандидаты и списки аргументов Candidate functions and argument lists Нотация вызова функции Function call syntax Вызов именованной функции Call to named function Вызов объекта классового типа Call to object of class type Операции в выражениях Operators in expressions Инициализация посредством конструктора Initialization by constructor Инициализация-копированием класса посредством преобразования, определенного пользователем Copy-initialization of class by user defined conversion Инициализация посредством функции преобразования Initialization by conversion function Инициализация посредством функции преобразования для непосредственного связывания ссылки Initialization by conversion function for direct reference binding Инициализация-списком Initialization by list-initialization Перспективные функции Viable functions Лучшая перспективная функция Best viable function Последовательности неявных преобразований Implicit conversion sequences Последовательности стандартных преобразований Standard conversion sequences Последовательности пользовательских преобразований User-defined conversion sequences Последовательности преобразований к многоточию Ellipsis conversion sequences Связывание ссылки Reference binding Последовательность инициализации-списком List-initialization sequence Ранжирование последовательностей неявных преобразований Ranking implicit conversion sequences Адрес совместно используемой функции Address of overloaded function Совместно используемые операции Overloaded operators Унарные операции Unary operators Бинарные операции Binary operators Присваивание Assignment Вызов функции Function call Индексация Subscripting Доступ к члену класса Class member access Инкремент и декремент Increment and decrement Литералы, определенные пользователем User-defined literals Встроенные операции Built-in operators ШАБЛОНЫ TEMPLATES Параметры шаблона Template parameters Имена специализаций шаблона Names of template specializations Аргументы шаблона Template arguments Типовые аргументы шаблона Template type arguments Нетиповые аргументы шаблона Template non-type arguments Шаблоны-аргументы шаблонов Template template arguments Эквивалентность типов Type equivalence Объявления шаблонов Template declarations Шаблоны классов Class templates Функции-члены шаблонов классов Member functions of class templates Классы-члены шаблонов классов Member classes of class templates

14 Статические данные-члены шаблонов классов Static data members of class templates Перечислимые типы-члены шаблонов классов Emuneration members of class termplates Шаблоны-члены Member templates Шаблоны с переменным числом параметров Variadic templates Друзья Friends Частичные специализации шаблона класса Class template partial specializations Сопоставление частичных специализаций шаблона класса Matching of class template partial specializations Частичное упорядочение специализаций шаблона класса Partial ordering of class template specializations Члены специализаций шаблона класса Members of class template specializations Шаблоны функций Function templates Совместное использование шаблонов функций Function template overloading Частичное упорядочение шаблонов функций Partial ordering of function templates Псевдонимы шаблонов Template aliases Разрешение имен Name resolution Локально объявленные имена Locally declared names Зависимые имена Dependent names Зависимые типы Dependent types Выражения, зависимые-по-типу Type-dependent expressions Выражения, зависимые-по-значению Value-dependent expressions Зависимые аргументы шаблона Dependent template arguments Независимые имена Non-dependent names Разрешение зависимых имен Dependent name resolution Точка настройки Point of instantiation Функции-кандидаты Candidate functions Дружественные имена, объявленные внутри шаблона класса Friend names declared within a class template Настройка и специализация шаблона Template instantiation and specialization Неявная настройка Implicit instantiation Явная настройка Explicit instantiation Явная специализация Explicit specialization Специализации шаблона функции Function template specializations Явное задание аргумента шаблона Explicit template argument specification Выведение аргументов шаблона Template argument deducing Выведение аргументов шаблона из вызова функции Deducing template arguments from a function call Выведение аргументов шаблона при взятии адреса шаблона функции Deducing template arguments taking the address of a function template Выведение аргументов шаблона функции преобразования Deducing conversion function template arguments Выведение аргументов шаблона в процессе частичного упорядочивания Deducing template arguments during partial ordering Выведение аргументов шаблона из типа Deducing template arguments from a type Выведение аргументов шаблона из объявления функции Deducing template arguments from a function declaration Разрешение совместного использования Overload resolution ОБРАБОТКА ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ EXCEPTION HANDLING Возбуждение исключительной ситуации Throwing an exception Конструкторы и деструкторы Constructors and destructors Обработка исключительной ситуации Handling an exception

15 15.4. Спецификации исключений Exception specification Специальные функции Special functions Функция std::terminate() The std::terminate() function Функция std::unexpected() The std::unexpected() function Функция std::uncaught_exceptions() The std::uncaught_exceptions() function ДИРЕКТИВЫ ПРЕПРОЦЕССИРОВАНИЯ PREPROCESSING DIRECTIVES Условное включение Conditional inclusion Включение исходных файлов Source file inclusion Макроподстановка Macro replacement Подстановка аргументов Argument substitution Операция # The # operator Операция ## The ## operator Повторное сканирование и последующие замены Rescanning and further replacement Область действия описаний макросов Scope of macro definitions Управление строками Line control Директива error Error directive Директива pragma Pragma directive Пустая директива Null directive Предописанные имена макросов Predefined macro names Операция Pragma Pragma operator ВВЕДЕНИЕ В СТАНДАРТНУЮ БИБЛИОТЕКУ LIBRARY INTRODUCTION Общие положения General Стандартная библиотека С The C standard library Определения Definitions поток с произвольным позиционированием arbitrary-positional stream блокировать block блокированный поток blocked thread символ character тип символьного контейнера character container type функция сравнения comparison function компонент component тупик deadlock поведение по умолчанию default behavior поведение по умолчанию default behavior функция-обработчик handler function шаблоны классов для потоков ввода-вывода iostream class templates функция-модификатор modifier function move construction конструирование перемещением присваивание перемещением move assignment состояние объекта object state NTCTS функция-наблюдатель observer function

16 referenceable type заменяющая функция replacement function поток с изменяемым позиционированием repositional stream требуемое поведение required behavior зарезервированная функция reserved function стабильный алгоритм stable algorithm класс-трейт traits class разблокировка unblock корректное, но неспецифицированное состояние valid but unspecified state Дополнительные определения Additional definitions Метод описания (информационный раздел) Method of description (Informative) Структура каждой главы Structure of each clause Элементы Elements Краткое содержание Summary Требования Requirements Детальные спецификации Detailed specifications Библиотека языка С C Library Прочие соглашения Other conventions Описания типов Type descriptions Общие положения General Перечислимые типы Enumerated types Битовые маски Bitmask types Последовательности символов Character sequences Байтовые строки Byte strings Многобайтовые строки Multibyte strings Функции в классах Functions within classes Приватные члены Private members Требования на библиотеку в целом Library-wide requirements Содержимое и организация библиотеки Library contents and organization Содержимое библиотеки Library contents Заголовочные файлы Headers Независимые реализации Freestanding implementations Использование библиотеки Using the library Обзор Overview Заголовочные файлы Headers Связывание Linkage Требования на типы и выраженния Requirements on types and expressions Требования на аргументы шаблона Template argument requirements Требования на типы и выражения, допускающие обмен значениями Swappable requirements Требования NullablePointer NullablePointer requirements Требования Hash Hash requirements Требования к аллокаторам Allocator requirements Требования к полноте аллокатора Allocator completeness requirements Ограничения на программы Constraints on programs Обзор Overview Использование пространств имен Namespace use Пространство имен std Namespace std Пространство имен posix Namespace posix Зарезервированные имена Reserved names Имена макросов Macro names Внешнее связывание External linkage Типы Types Литеральные суффиксы, определенные пользователем User-defined literal suffixes Заголовочные файлы Headers Производные классы Derived classes

17 Замещающие функции Replacement functions Функции-обработчики Handler functions Прочие функции Other functions Аргументы функций Function arguments Разделяемые объекты и библиотека Shared objects and the library Параграф «Требования» Required paragraph Реализации, соответствующие стандарту Conforming implementations Обзор Overview Заголовочные файлы Headers Ограничения на макроопределения Restrictions on macro definitions Глобальные и неклассовые функции Global and non-member functions Функции-члены Member functions constexpr-функции и конструкторы constexpr functions and constructors Требования к стабильным алгоритмам Requirements for stable algorithms Повторная входимость Reentrancy Предотвращение совместного доступа к данным Data race avoidance Защита внутри классов Protection within classes Производные классы Derived classes Ограничения на обработку исключений Restrictions on exception handling Ограничения на память для указателей Restrictions on storage of pointers Значения кодов ошибок Value of error codes Состояние перемещаемых объектов библиотечных типов Moved-from state of library types БИБЛИОТЕКА ПОДДЕРЖКИ ЯЗЫКА LANGUAGE SUPPORT LIBRARY Общие положения General Типы Types Свойства реализации Implementation properties Общие положения In General Числовые пределы Numeric limits Шаблон класса numeric_limits Class template numeric_limits Состав заголовочного файла <limits> Header <limits> synopsis Шаблон класса numeric_limits Class template numeric_limits Члены шаблона numeric_limits Numeric_limits members Тип float_round_style Type float_round_style Тип float_denorm_style Type float_denorm_style Специализации numeric_limits numeric_limits specializations Библиотека языка С C Library Целые типы Integer types Состав заголовочного файла <cstdint> Header <cstdint> synopsis Старт и завершение Start and termination Управление динамической памятью Dynamic memory management Отведение и освобождение памяти Storage allocation and deallocation Формы для единичных объектов Single-object forms Формы для массивов Array forms Формы с размещением Placement forms Совместный доступ к данным Data races Ошибки отведения памяти Storage allocation errors Класс bad_alloc Class bad_alloc Класс bad_array_new_length Class bad_array_new_length Тип new_handler Type new_handler set_new_handler get_new_handler

18 18.7. Идентификация типов Type identification Класс type_info Class info_type Класс bad_cast Class bad_cast Класс bad_typeid Class bad_typeid Обработка исключительных ситуаций Exception handling Класс exception Class exception Класс bad_exception Class bad_exception Аварийное завершение Abnormal termination Тип terminate_handler Type terminate_handler set_terminate get_terminate terminate uncaught_exceptions Распространение исключительной ситуации Exception propagation Класс nested_exception Class nested_exception Списки инициализаторов Initializer lists Конструкторы для инициализации списков Initializer list constructors Доступ к элементам списков Initializer list access Доступ к диапазону списков инициализаторов Initializer list range access Прочие средства поддержки времени выполнения Other runtime support 801 ПРИЛОЖЕНИЕ A СВОДКА СИНТАКСИЧЕСКИХ ПРАВИЛ 804 A.1 Служебные слова 804 A.2 Лексические соглашения 804 A.3 Основные понятия 810 A.4 Выражения 810 A.5 Операторы 814 A.6 Объявления 816 A.7 Описатели 821 A.8 Классы 823 A.9 Производные классы 824 A.10 Специальные функции-члены 825 A.11 Совместное использование 825 A.12 Шаблоны 826 A.13 Обработка исключительных ситуаций 827 A.14 Директивы препроцессирования 828 ПРИЛОЖЕНИЕ B ГЛОССАРИЙ ТЕРМИНОВ ЯЗЫКА С


СОДЕРЖАНИЕ. Часть I. Основы 59

СОДЕРЖАНИЕ. Часть I. Основы 59 СОДЕРЖАНИЕ Введение 18 Для кого написана эта книга 19 Изменения в пятом издании 20 Соглашения, принятые в книге 21 От издательства 24 Глава 1. Первые шаги 25 1.1. Создание простой программы на языке C++

Подробнее

ÀÑÒÜ I. ÏÅÐÂÎÅ ÇÍÀÊÎÌÑÒÂÎ Ñ C++

ÀÑÒÜ I. ÏÅÐÂÎÅ ÇÍÀÊÎÌÑÒÂÎ Ñ C++ Ñîäåðæàíèå Введение 16 О чем эта книга 16 Прилагаемый компакт-диск 16 Что такое C++ 17 Соглашения, используемые в книге 17 Как организована эта книга 18 И еще... 18 Часть I. Первое знакомство с C++ 18

Подробнее

Ñîäåðæàíèå Предисловие Предисловие к первому изданию Введение Глава 1. Вводный урок Глава 2. Типы данных, операции и выражения

Ñîäåðæàíèå Предисловие Предисловие к первому изданию Введение Глава 1. Вводный урок Глава 2. Типы данных, операции и выражения Ñîäåðæàíèå Предисловие 11 Предисловие к первому изданию 13 Введение 15 Глава 1. Вводный урок 19 1.1. Первые шаги 19 1.2. Переменные и арифметические выражения 22 1.3. Оператор for 27 1.4. Символические

Подробнее

ГОСТ М Е Ж Г О С У Д А Р С Т В Е Н Н Ы Й С Т А Н Д А Р Т. ЯЗЫКИ ПРОГРАММИРОВАНИЯ Термины и определения (ИСО )

ГОСТ М Е Ж Г О С У Д А Р С Т В Е Н Н Ы Й С Т А Н Д А Р Т. ЯЗЫКИ ПРОГРАММИРОВАНИЯ Термины и определения (ИСО ) Группа ЭОО М Е Ж Г О С У Д А Р С Т В Е Н Н Ы Й С Т А Н Д А Р Т ЯЗЫКИ ПРОГРАММИРОВАНИЯ ы и определения Programming languages. Terms and definitions ГОСТ 2 8 3 9 7-8 9 (ИСО 2382-15-85) МКС 01.040.35 35.060

Подробнее

Содержание. Введение 20. Глава 1. Что такое язык C# 27. Глава 2. Начало работы с C# 33. Глава 3. Краткий обзор языка C# 43

Содержание. Введение 20. Глава 1. Что такое язык C# 27. Глава 2. Начало работы с C# 33. Глава 3. Краткий обзор языка C# 43 Об авторах 18 Благодарности 19 Введение 20 Чем отличается эта книга 20 Для кого предназначена эта книга 21 Структура книги 21 О порядке чтения глав 22 Несколько советов 23 Соглашения, принятые в книге

Подробнее

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19

Содержание. Глава 1 Введение 21. Глава 2 Грамматика 29. Глава 3 Лексическая структура 33. Предисловие к Java SE 8 Edition 19 Содержание Предисловие к Java SE 8 Edition 19 Глава 1 Введение 21 1.1. Организация книги 22 1.2. Примеры программ 25 1.3. Обозначения 26 1.4. Связь с предопределенными классами и интерфейсами 26 1.5. Литература

Подробнее

Введение 15 Об этой книге 15 Использованные в этой книге пиктограммы 17 Дополнительные источники информации 18 Что дальше 18 Ждем ваших отзывов!

Введение 15 Об этой книге 15 Использованные в этой книге пиктограммы 17 Дополнительные источники информации 18 Что дальше 18 Ждем ваших отзывов! Содержание Введение 15 Об этой книге 15 Использованные в этой книге пиктограммы 17 Дополнительные источники информации 18 Что дальше 18 Ждем ваших отзывов! 19 Часть I. Знакомство с C++ 21 Глава 1. Написание

Подробнее

Объектно-ориентированное программирование. Лекция 13

Объектно-ориентированное программирование. Лекция 13 Объектно-ориентированное программирование Лекция 13 Основные термины Предметная область это набор понятий, представляющих важные аспекты решаемой задачи Объект это конструкция программы, использующая термины

Подробнее

332 Объектно-ориентированное программирование в С Структура MFT Файлы и потоки Каталоги ГЛАВА 9.

332 Объектно-ориентированное программирование в С Структура MFT Файлы и потоки Каталоги ГЛАВА 9. ОГЛАВЛЕНИЕ ПРЕДИСЛОВИЕ... 3 ГЛАВА 1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ ЯЗЫКА С++... 5 1.1. Алфавит языка... 5 1.2. Структура программы на языке С++... 6 ГЛАВА 2. СТАНДАРТНЫЕ ТИПЫ ДАННЫХ... 11 2.1. Переменные целого

Подробнее

Содержание. Глава 1. Начало работы с C Глава 2. Приступаем к изучению C++ 49

Содержание. Глава 1. Начало работы с C Глава 2. Приступаем к изучению C++ 49 Содержание Благодарности 20 Об авторе 22 От издательства 22 Введение 23 Принятый подход 23 Примеры кода, используемые в книге 24 Организация книги 24 Примечание для преподавателей 28 Соглашения, используемые

Подробнее

Ñîäåðæàíèå. àñòü 1. Ïåðâîå çíàêîìñòâî ñ C Введение 17

Ñîäåðæàíèå. àñòü 1. Ïåðâîå çíàêîìñòâî ñ C Введение 17 Ñîäåðæàíèå Введение 17 àñòü 1. Ïåðâîå çíàêîìñòâî ñ C++ 23 Глава 1. Написание вашей первой программы 25 Постигая концепции C++ 25 Что такое программа 26 Как пишут программы 26 Инсталляция Dev-C++ 27 Настройка

Подробнее

Ключевые слова языка С#

Ключевые слова языка С# 1 abstract, см. также 11, 55 2 as, см. также 37 Ключевые слова языка С# Модификатор abstract используется при объявлении класса, метода или свойства. Использование модификатора abstract в объявлении класса

Подробнее

ГОСТ (ИСО )

ГОСТ (ИСО ) Группа ЭОО М Е Ж Г О С У Д А Р С Т В Е Н Н Ы Й С Т А Н Д А Р Т ЯЗЫ КИ 11РОГРАММ И РОВАН ИЯ ы и опрелеления Programming languages. Terms and definitions ГОСТ 28397-89 (ИСО 2382-15-85) МКС 01.(МО.35 35.060

Подробнее

1.1. Ввод данных Выделение текста с помощью рамочки Резюме 32 Упражнения 34

1.1. Ввод данных Выделение текста с помощью рамочки Резюме 32 Упражнения 34 СОДЕРЖАНИЕ ВВЕДЕНИЕ 15 Новый подход к программированию на C++ 15 Наша книга полезна как для новичков, так и для опытных программистов 15 Абстракция 16 Охват материала 16 Несколько слов для опытных C- и

Подробнее

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ 2 ВОПРОСЫ Назовите основные отличия синтаксиса С от синтаксиса С++: Методы ввода-вывода? Описание переменных? Области видимости? Как реализуется принцип инкапсуляции

Подробнее

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами:

Введение в С++11 (стандарт ISO/IEC 14882:2011 Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: (стандарт ISO/IEC 14882:2011 ) Вне рассмотрения в рамках курса остаются нововведения для работы с шаблонами: ведение понятий лямбда-функций и выражений, внешние шаблоны, альтернативный синтаксис шаблонных

Подробнее

Содержание. Часть I. Основы 29. Предисловие 17. Благодарности 18. Глава 1. Об этой книге 21. Глава 2. Шаблоны функций 31. Глава 3. Шаблоны классов 43

Содержание. Часть I. Основы 29. Предисловие 17. Благодарности 18. Глава 1. Об этой книге 21. Глава 2. Шаблоны функций 31. Глава 3. Шаблоны классов 43 Содержание Предисловие 17 Благодарности 18 Глава 1. Об этой книге 21 1.1. Что необходимо знать, приступая к чтению этой книги 22 1.2. Структура книги в целом 22 1.3. Как читать эту книгу 23 1.4. Некоторые

Подробнее

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20

Содержание. Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Содержание Часть I. Погружение в С++ Глава 1. Введение и настройка среды разработки...20 Что такое язык программирования?...20 В чем различие между C и C++?.........................................21 Обязательно

Подробнее

Айк Харазян. самоучитель. Язык Swift. Санкт-Петербург «БХВ-Петербург»

Айк Харазян. самоучитель. Язык Swift. Санкт-Петербург «БХВ-Петербург» Айк Харазян самоучитель Язык Swift Санкт-Петербург «БХВ-Петербург» 2016 УДК 004.438 Swift ББК 32.973.26-018.1 Х20 Харазян А. А. Х20 Язык Swift. Самоучитель. СПб.: БХВ-Петербург, 2016. 176 с.: ил. (Самоучитель)

Подробнее

Содержание. Об авторе

Содержание. Об авторе Содержание Об авторе Введение Что нового в третьем издании О версии C++ Как работать с этой книгой Если вы работаете под управлением Windows Программный код из Web-пространства Что еще почитать Ждем ваших

Подробнее

Лекция 3. Операции и функции свободной памяти

Лекция 3. Операции и функции свободной памяти Название Лекция 3. и функции свободной памяти Проектирование ПО на C ++ 25 сентября 2010 г. Лекция 3 1 / 33 Объявления функций, использующих исключения Реализация функций выделения памяти Реализация обработчика

Подробнее

Средства обработки ошибок. Исключения в С++

Средства обработки ошибок. Исключения в С++ Средства обработки ошибок. Исключения в С++ Обработка исключительных ситуаций в С++ организуется с помощью ключевых слов try, catch и throw. Операторы программы, при выполнении которых необходимо обеспечить

Подробнее

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ»

Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Приблизительные вопросы к зачёту (1 семестр) по дисциплине «СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ» Тема 1. Введение в технологию Java Java как платформа, история создания. Среда разработки. Этапы создания

Подробнее

Содержание. Благодарности 21 Об авторе 23 Ждем ваших отзывов! 24

Содержание. Благодарности 21 Об авторе 23 Ждем ваших отзывов! 24 Содержание Предисловие 15 Причины для изучения C++ 15 Причины для чтения данной книги 16 Красавица и чудовище 16 Языки в науке и технике 18 Соглашения об оформлении 19 Благодарности 21 Об авторе 23 Ждем

Подробнее

Содержание. Глава 1. Введение в C++/CLI 31. Глава 2. Быстрое знакомство с языковыми средствами C++/CLI 43

Содержание. Глава 1. Введение в C++/CLI 31. Глава 2. Быстрое знакомство с языковыми средствами C++/CLI 43 Содержание Предисловия 15 Объяснение дизайна C++/CLI 17 Об авторе 24 О техническом рецензенте 25 Благодарности 25 Введение 26 Почему C++/CLI? 27 Об этой книге 28 Глава 1. Введение в C++/CLI 31 Сборка мусора

Подробнее

Министерство образования Республики Беларусь Учебно-методическое объединение вузов Республики Беларусь по естественнонаучному

Министерство образования Республики Беларусь Учебно-методическое объединение вузов Республики Беларусь по естественнонаучному Министерство образования Республики Беларусь Учебно-методическое объединение вузов Республики Беларусь по естественнонаучному образованию УТВЕРЖДАЮ Первый заместитель министра образования Республики Беларусь

Подробнее

ПРОГРАММА ДИСЦИПЛИНЫ ПРОГРАММИРОВАНИЕ И ОСНОВЫ АЛГОРИТМИЗАЦИИ

ПРОГРАММА ДИСЦИПЛИНЫ ПРОГРАММИРОВАНИЕ И ОСНОВЫ АЛГОРИТМИЗАЦИИ ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ КАФЕДРА ТЕХНОЛОГИИ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ПРОГРАММА ДИСЦИПЛИНЫ ПРОГРАММИРОВАНИЕ И ОСНОВЫ АЛГОРИТМИЗАЦИИ. Цели изучения дисциплины Знать основные конструкции

Подробнее

Лекция 2. Как выполняются программы на C++

Лекция 2. Как выполняются программы на C++ http://compscicenter.ru 1/21 Лекция 2. Как выполняются программы на C++ Александр Смаль CS центр 15 сентября 2016 Санкт-Петербург http://compscicenter.ru 2/21 Типы данных Целочисленные: 1. char (символьный

Подробнее

Ответы на вопросы экзамена по курсу «Языки программирования»

Ответы на вопросы экзамена по курсу «Языки программирования» ы на вопросы экзамена по курсу «Языки программирования» 19.01.2015 В ответах курсивом выделены необязательные пояснения, которые можно опустить (особенно на экзамене) Вариант 1 Задача 1-1 Что означает

Подробнее

Зачем нужны шаблоны 35

Зачем нужны шаблоны 35 Содержание Предисловие 22 Благодарности ко второму изданию 23 Благодарности Дэвида ко второму изданию 23 Благодарности Нико ко второму изданию 24 Благодарности Дуга ко второму изданию 24 Благодарности

Подробнее

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ»

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040302 Інформатика Дисципліна «Програмування» Підсумкова модульна контрольна

Подробнее

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ДРУЖЕСТВЕННЫЕ ФУНКЦИИ И КЛАССЫ 2 3 4 ДРУЖЕСТВЕННАЯ ФУНКЦИЯ Дружественная функция объявляется внутри класса, к элементам которого ей нужен доступ, с ключевым словом

Подробнее

Введение 15 Структура книги 16 Соглашения, используемые в книге 16 Об авторах 17 Благодарности 17 Ждем ваших отзывов! 18

Введение 15 Структура книги 16 Соглашения, используемые в книге 16 Об авторах 17 Благодарности 17 Ждем ваших отзывов! 18 Введение 15 Структура книги 16 Соглашения, используемые в книге 16 Об авторах 17 Благодарности 17 Ждем ваших отзывов! 18 Часть I. Язык 19 Глава 1. Соглашение об именах 21 Имена классов 21 Имена интерфейсов

Подробнее

Теоретические вопросы

Теоретические вопросы МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ ДЕРЖАВНИЙ ВИЩИЙ НАВЧАЛЬНИЙ ЗАКЛАД «ЗАПОРІЗЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ» Спеціальність 6.040301 Прикладна математика Дисципліна «Програмування» Модульна контрольна робота

Подробнее

Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Стандарты (комитета по стандартизации ANSI) 1998, 2011.

Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Стандарты (комитета по стандартизации ANSI) 1998, 2011. Язык C++ С++ позволяет справиться с возрастающей сложностью программ (в отличие от С). Автор Бьёрн Страуструп. Стандарты (комитета по стандартизации ANSI) 1998, 2011. С++: лучше С, поддерживает абстракции

Подробнее

ПРОГРАММИРОВАНИЕ Типовая учебная программа для высших учебных заведений по специальностям: Радиофизика; Физическая электроника;

ПРОГРАММИРОВАНИЕ Типовая учебная программа для высших учебных заведений по специальностям: Радиофизика; Физическая электроника; ПРОГРАММИРОВАНИЕ Типовая учебная программа для высших учебных заведений по специальностям: - 0 0 Радиофизика; - 0 0 Физическая электроника; -9 0 0 Компьютерная безопасность (по направлениям) (направление

Подробнее

Федеральное государственное автономное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

Федеральное государственное автономное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Федеральное государственное автономное образовательное учреждение высшего профессионального образования «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» Институт математики и фундаментальной информатики Базовая кафедра

Подробнее

ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК Syntax error RETURN without GOSUB Out of data Illegal fuction call

ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК Syntax error RETURN without GOSUB Out of data Illegal fuction call 165 ПРИЛОЖЕНИЕ 2 КОДЫ ОШИБОК В QBasic существуют два основных типа ошибок: ошибки периода компиляции и периода выполнения. Первые это в основном синтаксические ошибки, обнаруженные компилятором, вторые

Подробнее

Алгоритм-я и основы програм-я_рус_4кр_зим_шайдуллина Т_ВТиПО(2к4г очн)

Алгоритм-я и основы програм-я_рус_4кр_зим_шайдуллина Т_ВТиПО(2к4г очн) Алгоритм-я и основы програм-я_рус_4кр_зим_шайдуллина Т_ВТиПО(2к4г очн) 1 Преобразование целочисленной переменной value в ASCII эквивалент 2 Это значение 5.9875e17 может быть сохранено в переменной, типа:

Подробнее

Вопросы для самопроверки

Вопросы для самопроверки Вопросы для самопроверки Программирование на языке С 11 ноября 2014 г. Лекция 1. Вводная 1. Какие существуют аспекты разработки ПО? Подходы к разработке? 2. Какие признаки характеризуют любительский подход?

Подробнее

ЧАСТЬ І. МЕТОДЫ РЕШЕНИЯ ЗАДАЧ 23 Глава 1. Принципы программирования и разработки программного обеспечения 24

ЧАСТЬ І. МЕТОДЫ РЕШЕНИЯ ЗАДАЧ 23 Глава 1. Принципы программирования и разработки программного обеспечения 24 Содержание Предисловие 13 Обращение к студентам 13 Метод изложения 14 Необходимые условия 14 Гибкость 14 Абстракция данных 15 Решение задач 16 Приложения 16 Новый и переработанный материал 16 Обзор 17

Подробнее

4.13. Строки. 10 символов char string[11]; "строка в кавычках" Строковая константа - char str[ ] = Counted by compiler! ;

4.13. Строки. 10 символов char string[11]; строка в кавычках Строковая константа - char str[ ] = Counted by compiler! ; -одномерные массивы типа char, заканчивающийся нулевым байтом - '\0 или '\x0 10 символов char string[11]; 4.13. Строки Строковая константа - "строка в кавычках" добавляется '\0 char str[ ] = Counted by

Подробнее

Содержание. Благодарности Предисловие... 12

Содержание. Благодарности Предисловие... 12 Содержание Благодарности... 11 Предисловие... 12 Урок 1. Первая программа... 20 1.1. Внешний вид и назначение приложения Умножитель... 20 1.2. Знакомство с визуальным программированием... 21 1.2.1. Форма...

Подробнее

Статические члены класса.

Статические члены класса. Статические члены класса. Статические члены-данные и члены-функции описываются в классе с квалификатором static. Статические члены-данные существуют в одном экземпляре и доступны для всех объектов данного

Подробнее

Предисловие Благодарности... 18

Предисловие Благодарности... 18 Оглавление Предисловие... 16 Благодарности... 18 Введение... 19 История ECMAScript 6... 19 О книге... 20 Совместимость с браузерами и Node.js... 20 Кому адресована книга... 20 Обзор содержания... 21 Используемые

Подробнее

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7

«Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_ г. Пр. 7 «Утверждаю» Заведующий кафедрой /О.И.Наранович/ «29»_08 2016 г. Пр. 7 Вопросы к экзамену по дисциплине «Объектно-ориентированное программирование» по специальности «Информационные системы и технологии»

Подробнее

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы.

Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. Семинар 5. Статические элементы данных и функции. Наследование. Виртуальные методы. 1. Статическая (static) переменная класса Добавим в определение класса статическую переменную: private: // double x;

Подробнее

Оператор Синтаксис Приоритет Присваивание Сложение a + b 4 Вычитание a b 4 Умножение a * b 3 Деление a / b 3 Унарный минус -a 2

Оператор Синтаксис Приоритет Присваивание Сложение a + b 4 Вычитание a b 4 Умножение a * b 3 Деление a / b 3 Унарный минус -a 2 Учебный язык программирования MiniC для построения транслятора для дисциплины «Языки программирования и методы трансляции», «Практикум по программированию» Учебный язык является подмножеством C++ с добавлением

Подробнее

Содержание ЧАСТЬ I. ВВЕДЕНИЕ В ПРЕДМЕТ 13 ЧАСТЬ II. ТЕОРИЯ И ПРАКТИКА ПРОГРАММИРОВАНИЯ НА C++ 29

Содержание ЧАСТЬ I. ВВЕДЕНИЕ В ПРЕДМЕТ 13 ЧАСТЬ II. ТЕОРИЯ И ПРАКТИКА ПРОГРАММИРОВАНИЯ НА C++ 29 Содержание Введение 11 Для кого предназначена эта книга 11 Условные обозначения 11 Структура книги 11 От издательства Диалектика 12 ЧАСТЬ I. ВВЕДЕНИЕ В ПРЕДМЕТ 13 Глава 1. Краткое предисловие 14 Глава

Подробнее

Концепция перемещений (move) (C++11)

Концепция перемещений (move) (C++11) Концепция перемещений (move) (C++11) В стандарт C++11 введены перемещающие конструктор и оператор присваивания, для более оптимального управления объектами Пример I: функция обмена для двух стеков void

Подробнее

Лекция 12. Шаблоны, часть вторая

Лекция 12. Шаблоны, часть вторая http://compscicenter.ru 1/10 Александр Смаль CS центр 18 ноября 2015 Санкт-Петербург http://compscicenter.ru 2/10 Полная специализация шаблонов: классы struct Array {... T * data_ ; ; template struct

Подробнее

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ УКАЗАТЕЛЬ THIS УКАЗАТЕЛЬ THIS Всякий раз, когда вызывается метод класса, ему автоматически передается указатель на объект, вызывающий данный метод. Можно получить

Подробнее

I. Цели и задачи дисциплины «Современные технологии программирования» Цель данного курса научить студентов практическому объектноориентированному

I. Цели и задачи дисциплины «Современные технологии программирования» Цель данного курса научить студентов практическому объектноориентированному I. Цели и задачи дисциплины «Современные технологии программирования» Цель данного курса научить студентов практическому объектноориентированному программированию на языке С++, самостоятельно создавать

Подробнее

Задание 1. Ваша программа должна выполнять следующие действия:

Задание 1. Ваша программа должна выполнять следующие действия: Задание 1. Цель: Конструирование пользовательского типа данных структур, создание массива структур в динамической памяти, ввод исходных данных из файла, запись результатов работы в файл. Задание: Создать

Подробнее

Лекция 3. Использование динамической памяти

Лекция 3. Использование динамической памяти Название Виды памяти Лекция 3. Использование динамической памяти Метапрограммирование в C ++ 17 февраля 2017 г. Лекция 3 1 / 30 Название Виды памяти Виды памяти в программе на C ++ Название Хранимые объекты

Подробнее

26 вычислительные методы и программирование Т. 11 УДК 519.6

26 вычислительные методы и программирование Т. 11 УДК 519.6 26 вычислительные методы и программирование. 2010. Т. 11 УДК 519.6 СРЕДСТВА АВТОМАТИЗАЦИИ ДОКУМЕНТИРОВАНИЯ БОЛЬШИХ КОМПЛЕКСОВ ПРОГРАММ О.Б. Арушанян 1, Н. А. Богомолов 1, Н.И. Волченскова 1, А. Д. Ковалев

Подробнее

ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß

ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß 178 ISSN 2072-9502. Âåñòíèê ÀÃÒÓ. Ñåð. Óïðàâëåíèå, âû èñëèòåëüíàÿ òåõíèêà è èíôîðìàòèêà. 2009. 1 УДК 004.43 В. В. Лаптев, В. В. Толасова ÎÑÎÁÅÍÍÎÑÒÈ ßÇÛÊÀ ÏÐÎÃÐÀÌÌÈÐÎÂÀÍÈß ÄËß ÎÁÓ ÅÍÈß Введение В настоящее

Подробнее

Содержание. Содержание 7

Содержание. Содержание 7 Содержание Об авторе 15 Благодарность 16 Введение 17 Актуален ли язык программирования C 17 Подход, используемый в данной книге 17 Как работает эта книга 18 Использованные пиктограммы 19 Мысли на бегу

Подробнее

Язык программирования Си

Язык программирования Си Язык программирования Си Алфавит языка Си прописные и строчные буквы латинского алфавита A,..., Z, a,..., z цифры 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 специальные знаки, {} [] () + - / % \ ;. :? < = > _! & * #

Подробнее

Алфавит. Алфавит языка PASCAL

Алфавит. Алфавит языка PASCAL Алфавит языка PASCAL Текст PASCAL-программы представляет собой последовательность строк, состоящих из символов, образующих алфавит языка. Максимальная длина строки - 126 символов. Алфавит Буквы Цифры Управляющ.

Подробнее

Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов.

Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов. Семинар 6. Наследование. Включение объектов и закрытое наследование. Множественное наследование. Шаблоны классов. 1. Наследование и динамическое распределение памяти Пусть в базовом классе осуществляется

Подробнее

Содержание. Введение 19 Структура книги 19 Соглашения, принятые в книге 20 Примеры кода 21 От издательства 21

Содержание. Введение 19 Структура книги 19 Соглашения, принятые в книге 20 Примеры кода 21 От издательства 21 Содержание Введение 19 Структура книги 19 Соглашения, принятые в книге 20 Примеры кода 21 От издательства 21 ЧАСТЬ I. Основы 23 ЗАНЯТИЕ 1. Первые шаги 25 Краткий экскурс в историю языка C++ 26 Связь с

Подробнее

Содержание. Часть I. Основы Java 21

Содержание. Часть I. Основы Java 21 Содержание Об авторе 13 Введение 15 Как работать с этой книгой 15 Соглашения, используемые в книге 15 Что можно не читать 16 Несколько предположений 17 Структура книги 18 Часть I. Основы Java 18 Часть

Подробнее

Содержание. Введение 22. Глава 1. Программирование в Visual C Глава 2. Данные, переменные и вычисления 63

Содержание. Введение 22. Глава 1. Программирование в Visual C Глава 2. Данные, переменные и вычисления 63 Содержание Об авторе 20 О техническом редакторе 20 Благодарности 21 Введение 22 Программирование на языке C++ 22 Разработка приложений Windows 22 Дополнительные возможности библиотек 23 Для кого предназначена

Подробнее

Перегрузка операций. Перегрузка операций в языке С++ дает программисту возможность строить выражения, в которых операндами являются объекты.

Перегрузка операций. Перегрузка операций в языке С++ дает программисту возможность строить выражения, в которых операндами являются объекты. Перегрузка операций Классификация операций языка С++ Способы перегрузки операций в языке С++ Заголовки функций для перегрузки операций Дружественные функции Особые случаи перегрузки операций Перегрузка

Подробнее

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания.

Язык программирования Си++ Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Язык программирования Си++ Иванов А.П., Князева О.С. Семинар 9. Зачет: методика его проведения, теоретический минимум и типовые задания. Зачет проводится в практикуме и состоит из двух частей: теоретической

Подробнее

Цели и задачи дисциплины «Современные технологии программирования»

Цели и задачи дисциплины «Современные технологии программирования» Цели и задачи дисциплины «Современные технологии программирования» Цель данного курса научить студентов практическому объектноориентированному программированию на языке С++, самостоятельно создавать грамотные

Подробнее

Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке

Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке 2013 Иногда возникает потребность описывать и применять к созданным программистом типам данных операции, по смыслу эквивалентные уже имеющимся в языке 2 Перегрузка операций предполагает введение в язык

Подробнее

Множественное наследование

Множественное наследование Множественное наследование class A {... ; class B {... ; class C : public A, protected B {... ; Спецификатор доступа распространяется только на один базовый класс; для других базовых классов начинает действовать

Подробнее

Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ

Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ Содержание ВВЕДЕНИЕ... 3 ЛАБОРАТОРНАЯ РАБОТА 1. НАЧАЛЬНЫЕ СВЕДЕНИЯ ОБ ИНТЕГРИРОВАННЫХ СРЕДАХ РАЗРАБОТКИ ПРОГРАММ... 5 Работа в интегрированной среде разработки программ MS Visual Studio 2008, работающей

Подробнее

Программа курса C++, Академический университет, кафедра МиИТ

Программа курса C++, Академический университет, кафедра МиИТ Программа курса C++, Академический университет, кафедра МиИТ Курс расчитан на студентов, владеющих синтаксисом хотя бы одного из стандартных структурных языков программирования (C, Pascal, Fortran, и т.п.).

Подробнее

ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ

ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ Министерство образования Республики Беларусь Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники» Кафедра информатики А.А. Волосевич ИНСТРУМЕНТЫ И СРЕДСТВА ПРОГРАММИРОВАНИЯ

Подробнее

Содержание. Часть I. Введение в VBA 19. Введение 15. Глава 1. Язык VBA и его возможности 21. Глава 2. Редактор Visual Basic 33

Содержание. Часть I. Введение в VBA 19. Введение 15. Глава 1. Язык VBA и его возможности 21. Глава 2. Редактор Visual Basic 33 Введение 15 Общие сведения о книге 15 Для кого предназначена эта книга 16 Структура книги 16 Условные обозначения 17 От издательства Диалектика 18 Часть I. Введение в VBA 19 Глава 1. Язык VBA и его возможности

Подробнее

Алгоритмизация и программирование Программирование на С/С++ (ч.17 основы ООП. Классы и объекты)

Алгоритмизация и программирование Программирование на С/С++ (ч.17 основы ООП. Классы и объекты) Алгоритмизация и программирование Программирование на С/С++ (ч.17 основы ООП. Классы и объекты) Беркунский Е.Ю., кафедра ИУСТ, НУК eugeny.berkunsky@gmail.com http://www.berkut.mk.ua ООП что это? Объектно-ориентированное

Подробнее

Содержание Предисловие Глава 1. Введение в компьютерные технологии Глава 2. Среда разработки Delphi Глава 3. Планирование разработки программы

Содержание Предисловие Глава 1. Введение в компьютерные технологии Глава 2. Среда разработки Delphi Глава 3. Планирование разработки программы Содержание Предисловие 14 Глава 1. Введение в компьютерные технологии 21 Краткий экскурс в историю вычислительных устройств 22 Типы компьютеров 26 Компоненты типичного персонального компьютера 27 Двоичная

Подробнее

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания

Перегрузка функций. О перегрузке можно говорить только для функций из одной области описания Перегрузка функций О перегрузке можно говорить только для функций из одной области описания Перегрузка: struct A { int f (int x); // две функции с одинаковым именем в одной области int f (char x); // описания;

Подробнее

Синтаксис языка С# Комментарии // Однострочный комментарий. /* Можно комментировать много строк */

Синтаксис языка С# Комментарии // Однострочный комментарий. /* Можно комментировать много строк */ Комментарии // Однострочный комментарий /* Можно комментировать много строк */ Синтаксис языка С# /// это однострочный комментарий для документации /// /// Это однострочный

Подробнее

ЧАСТЬ I. ВВЕДЕНИЕ В VBA

ЧАСТЬ I. ВВЕДЕНИЕ В VBA Содержание Введение 15 Общие сведения о книге 15 Для кого предназначена эта книга 16 Структура книги 16 Условные обозначения 17 От издательства Диалектика 18 ЧАСТЬ I. ВВЕДЕНИЕ В VBA 19 Глава 1. Язык VBA

Подробнее

ПРЕДИСЛОВИЕ... 3 ВВЕДЕНИЕ... 4

ПРЕДИСЛОВИЕ... 3 ВВЕДЕНИЕ... 4 ПРЕДИСЛОВИЕ... 3 ВВЕДЕНИЕ...... 4 РАЗДЕЛ 1. СТРУКТУРНАЯ МЕТОДОЛОГИЯ РАЗРАБОТКИ ПРОГРАММ 8 1.1. Алгоритм... 8 1.2. Основные этапы решения задач на Э В М... 8 1.2.1. Тестирование программ... 13 1.2.2. Отладка

Подробнее

Типы данных и управляющие структуры Java

Типы данных и управляющие структуры Java Типы данных и управляющие структуры Java Евгений Беркунский, НУК eugeny.berkunsky@gmail.com http://berkut.homelinux.com Что такое тип данных? Тип данных: Спектр значений Набор допустимых операций Программа

Подробнее

Лекция 1. Языки C и C++

Лекция 1. Языки C и C++ http://compscicenter.ru 1/43 Александр Смаль CS центр 10 сентября 2014 Санкт-Петербург http://compscicenter.ru 2/43 Язык C Язык программирования C++ создан на основе языка C. Язык программирования C разработан

Подробнее

C++11 и выше: некоторые особенности языка

C++11 и выше: некоторые особенности языка C++11 и выше: некоторые особенности языка Коноводов Владимир кафедра математической кибернетики ВМК 11.12.2017 C++11: auto и decltype Автоматический вывод типа переменной сильно упрощает жизнь. auto x

Подробнее

АЛГОРИТМЫ И АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ: СТИЛЬ КОДИРОВАНИЯ

АЛГОРИТМЫ И АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ: СТИЛЬ КОДИРОВАНИЯ АЛГОРИТМЫ И АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ: СТИЛЬ КОДИРОВАНИЯ СМИРНОВ П. О. 2 сентября 2015 г. ВВЕДЕНИЕ Для того чтобы считаться хорошим программистом или хотя бы просто человеком, умеющим программировать, недостаточно

Подробнее

Содержание. Часть I. Основы Java 21 Глава 1. Знакомство с Java 23. Введение 14. Глава 2. Разработка программного обеспечения 35

Содержание. Часть I. Основы Java 21 Глава 1. Знакомство с Java 23. Введение 14. Глава 2. Разработка программного обеспечения 35 Содержание Об авторе 13 Введение 14 Как работать с этой книгой 14 Соглашения, принятые в книге 14 Что можно не читать 15 Исходные предположения 16 Структура книги 17 Часть I. Основы Java 17 Часть II. Создание

Подробнее

Низкоуровневые средства C++ для работы с памятью. (продолжение)

Низкоуровневые средства C++ для работы с памятью. (продолжение) Низкоуровневые средства C++ для работы с памятью (продолжение) Курс «Разработка ПО систем управления» Кафедра управления и информатики НИУ «МЭИ» Весна 2018 г. Операторы static_cast, reinterpret_cast static_cast

Подробнее

Проектирование больших систем на C++

Проектирование больших систем на C++ Проектирование больших систем на C++ Коноводов В. А. кафедра математической кибернетики ВМК Лекция 14 15.12.2017 Многопоточность: non-joinable 1. Объекты std::thread, сконструированные конструктором по

Подробнее

Common Lisp. Введение

Common Lisp. Введение Common Lisp. Введение Kalyanov.Dmitry@gmail.com 10 апреля 2009 года Содержание 1 Введение 2 3 4 5 6 Одна цитата Lisp is worth learning for the profound enlightenment experience you will have when you finally

Подробнее

Синтаксис и семантика языка программирования Паскаль

Синтаксис и семантика языка программирования Паскаль Синтаксис и семантика языка программирования Паскаль История Язык Паскаль был разработан в 1970 г. Никлаусом Виртом как язык, обеспечивающий строгую типизацию и интуитивно понятный синтаксис. Он был назван

Подробнее

Теория и технология программирования Основы программирования на языках C и C++

Теория и технология программирования Основы программирования на языках C и C++ Теория и технология программирования Основы программирования на языках Лекция 17. Стандарты и реализации Глухих Михаил Игоревич, к.т.н., доц. mailto: glukhikh@mail.ru Основные стандарты и реализации Язык

Подробнее

C++ MFC / STL / CLI.NET Visual Studio

C++ MFC / STL / CLI.NET Visual Studio C++ MFC / STL / CLI.NET Visual Studio Популярность языков (по данным tiobe.com (янв-2014) Язык программирования 2014 2009 2004 1999 1994 1989 C 1 2 2 1 1 1 Java 2 1 1 16 - - Objective-C 3 42 48 - - - C++

Подробнее

Пышкин Е.В. ОСНОВНЫЕ КОНЦЕПЦИИ И МЕХАНИЗМЫ ОБЪЕКТНО- ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

Пышкин Е.В. ОСНОВНЫЕ КОНЦЕПЦИИ И МЕХАНИЗМЫ ОБЪЕКТНО- ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ Пышкин Е.В. ОСНОВНЫЕ КОНЦЕПЦИИ И МЕХАНИЗМЫ ОБЪЕКТНО- ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ Предисловие Преподавание: исторический экскурс Основная задача книги Благодарности БХВ-Петербург, Санкт-Петербург,

Подробнее

Учебно-программная документация

Учебно-программная документация Учебно-программная документация ПОЯСНИТЕЛЬНАЯ ЗАПИСКА Дисциплина «Программирование» ориентирована на освоение студентами базовых знаний, умений и навыков в области программирования. Основой для освоения

Подробнее

Классы, объекты и пакеты в Java

Классы, объекты и пакеты в Java Классы, объекты и пакеты в Java Алексей Владыкин 30 сентября 2013 Алексей Владыкин Классы, объекты и пакеты в Java 30 сентября 2013 1 / 35 1 Основы ООП 2 Классы 3 Наследование 4 Пакеты Алексей Владыкин

Подробнее

Классы и объекты. Основы

Классы и объекты. Основы Классы и объекты Основы class Каждое определение класса начинается с ключевого слова class, затем следует имя класса, и далее пара фигурных скобок, которые заключают в себе определение свойств и методов

Подробнее

ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN

ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN ВЫБОР ХЕШ-ФУНКЦИЙ ДЛЯ КОМПИЛЯТОРОВ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ПАСКАЛЬ И С# С ПОМОЩЬЮ ПАКЕТА OSPGEN 2.2 А.Н.Фролов Московский государственный институт радиотехники, электроники и автоматики (технический университет)

Подробнее

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы

ООП. С++. Вопросы для проверки и закрепления знаний. 7. Проанализируйте ранее разработанные Вами программы ООП. С++. Вопросы для проверки и закрепления знаний. 1. Проанализируйте ранее разработанные Вами программы и ответьте на вопрос: в каких из них наблюдается слабая связь между структурой данных и функционированием

Подробнее

Перегрузка операторов: бинарные операторы

Перегрузка операторов: бинарные операторы Перегрузка операторов: бинарные операторы Примеры бинарных операторов a+b; a-b; a = b; a += b; a < b; cout

Подробнее