2_C_to_CPP

Содержание

Слайд 2

От Си к С++

ВВЕДЕНИЕ В ПРОМЫШЛЕННУЮ СИСТЕМНУЮ РАЗРАБОТКУ

От Си к С++ ВВЕДЕНИЕ В ПРОМЫШЛЕННУЮ СИСТЕМНУЮ РАЗРАБОТКУ

Слайд 3

Язык Си

Функции
Указатели и Массивы
Ручное управление памятью
Структуры
Макросы

Что свойственно языку Си с точки зрения

Язык Си Функции Указатели и Массивы Ручное управление памятью Структуры Макросы Что
синтаксиса

Слайд 4

Язык Си

Хранение данных в структуре
Функции для работы с СД
Функции для копирования СД
Вызов

Язык Си Хранение данных в структуре Функции для работы с СД Функции
функции конструирования и уничтожения памяти для СД

Простейшая структура данных на языке Си.

Проблемы?

Небезопасно
Неудобно
Неудобно
Небезопасно

Слайд 5

Язык Си

Стэк курильщика

Что бы нам хотелось?

Чтобы компилятор знал какие функции могут работать

Язык Си Стэк курильщика Что бы нам хотелось? Чтобы компилятор знал какие
с объектом стека
Чтобы компилятор сам вызывал конструктор и деструктор стека
Возможность давать более короткие имена без пересечений
Невозможность получить доступ значениям структуры, там, где это не нужно
Возможность сделать стек для произвольной структуры данных без void * и уродских макросов
Использовать операторы вместо функций

И это только начало!

Слайд 6

От Си к С++

Функции
Указатели и Массивы
Ручное управление памятью
Структуры
Макросы

Методы, операторы и перегрузка
Оболочки

От Си к С++ Функции Указатели и Массивы Ручное управление памятью Структуры
и ссылки
Конструкторы и деструкторы
Классы
Шаблоны

А также исключения, полиморфизм, наследование, лямбды, RTTI и много-много всего, но об этом позже…

Слайд 7

Основы основ С++ и решение проблем языка Си

План рассказа:
Перегрузка функций
Перегрузка операторов
Ссылки
От структур

Основы основ С++ и решение проблем языка Си План рассказа: Перегрузка функций
к классам
Конструкторы и деструкторы
Инкапсуляция
Пространства имен
Шаблоны
Наследование и динамический полиморфизм

Слайд 8

Перегрузка функций в С++

Что будет в языке Си? В С++?

Перегрузка функций в

Перегрузка функций в С++ Что будет в языке Си? В С++? Перегрузка
С++ - возможность использовать функций с одним именем и разными входными параметрами

Почему такое невозможно в Си? Ведь компилятор все знает в процессе компиляции

Слайд 9

Перегрузка функций в С++

Перегрузка функций в С++

Слайд 10

Перегрузка функций в С++

А что если не все так тривиально?

Перегрузка функций в С++ А что если не все так тривиально?

Слайд 11

Перегрузка функций в С++

Также в перегрузку включены:
Шаблоны
Константность
Пользовательские преобразования типов
Листы параметров (va_args, …)

https://en.cppreference.com/w/cpp/language/overload_resolution

Правила

Перегрузка функций в С++ Также в перегрузку включены: Шаблоны Константность Пользовательские преобразования
перегрузки могут быть очень сложными, например SFINAE, но это вам рано. Остановимся на интуитивно понятных перегрузках

Перегрузка не может быть по возвращаемому значению, ключевым словам (inline, noexcept, static), аттрибутам (maybe_unused, nodiscard) и т д

Слайд 12

Перегрузка операторов в С++

Перегрузка операторов в С++

Слайд 13

Перегрузка операторов в С++

Перегрузка операторов в С++

Слайд 14

Ссылки

Передача аргумента для его модицикации

Но какая проблема у ссылок?

Как правило ссылки не

Ссылки Передача аргумента для его модицикации Но какая проблема у ссылок? Как
используются для передачи параметра, который будет изменен.

Слайд 15

Ссылки

Как правило ссылки не используются для передачи параметра, который будет изменен. Но

Ссылки Как правило ссылки не используются для передачи параметра, который будет изменен.
зачем тогда они нужны?

Слайд 16

Ссылки

Передача копий параметров: простейшие типы для чтения
Передача по константной ссылке: любые типы

Ссылки Передача копий параметров: простейшие типы для чтения Передача по константной ссылке:
для чтения, больше чем указатель
Передача по указателю: любые данные, для изменения

Можете придумать исключения, когда такое неправильно?

Слайд 17

Переход к классам: методы

Вспомним про стек курильщика

Что мы тут хотели?

Переход к классам: методы Вспомним про стек курильщика Что мы тут хотели?

Слайд 18

Переход к классам: методы

Простейший пример

‘this’ – неявный параметр не статического метода

Переход к классам: методы Простейший пример ‘this’ – неявный параметр не статического метода

Слайд 19

Переход к классам: конструкторы и деструкторы

Переход к классам: конструкторы и деструкторы

Слайд 20

Стэк на С++

Стэк на С++

Слайд 21

В дальнейшем:

Лекция, От Си к С++ часть 2

Самостоятельная работа: Изучить правила перегрузки

В дальнейшем: Лекция, От Си к С++ часть 2 Самостоятельная работа: Изучить
функций, какие бывают перегрузки операторов.
Написать структуру данных на С++, используя то, что мы сегодня рассматривали.
Имя файла: 2_C_to_CPP.pptx
Количество просмотров: 23
Количество скачиваний: 0