🗊Презентация Перегрузка метода по категории значения объекта

Нажмите для полного просмотра!
Перегрузка метода по категории значения объекта, слайд №1Перегрузка метода по категории значения объекта, слайд №2Перегрузка метода по категории значения объекта, слайд №3Перегрузка метода по категории значения объекта, слайд №4Перегрузка метода по категории значения объекта, слайд №5Перегрузка метода по категории значения объекта, слайд №6Перегрузка метода по категории значения объекта, слайд №7Перегрузка метода по категории значения объекта, слайд №8Перегрузка метода по категории значения объекта, слайд №9Перегрузка метода по категории значения объекта, слайд №10Перегрузка метода по категории значения объекта, слайд №11Перегрузка метода по категории значения объекта, слайд №12Перегрузка метода по категории значения объекта, слайд №13Перегрузка метода по категории значения объекта, слайд №14Перегрузка метода по категории значения объекта, слайд №15Перегрузка метода по категории значения объекта, слайд №16Перегрузка метода по категории значения объекта, слайд №17Перегрузка метода по категории значения объекта, слайд №18Перегрузка метода по категории значения объекта, слайд №19Перегрузка метода по категории значения объекта, слайд №20Перегрузка метода по категории значения объекта, слайд №21Перегрузка метода по категории значения объекта, слайд №22Перегрузка метода по категории значения объекта, слайд №23Перегрузка метода по категории значения объекта, слайд №24Перегрузка метода по категории значения объекта, слайд №25Перегрузка метода по категории значения объекта, слайд №26Перегрузка метода по категории значения объекта, слайд №27Перегрузка метода по категории значения объекта, слайд №28Перегрузка метода по категории значения объекта, слайд №29Перегрузка метода по категории значения объекта, слайд №30Перегрузка метода по категории значения объекта, слайд №31Перегрузка метода по категории значения объекта, слайд №32Перегрузка метода по категории значения объекта, слайд №33Перегрузка метода по категории значения объекта, слайд №34Перегрузка метода по категории значения объекта, слайд №35Перегрузка метода по категории значения объекта, слайд №36Перегрузка метода по категории значения объекта, слайд №37Перегрузка метода по категории значения объекта, слайд №38Перегрузка метода по категории значения объекта, слайд №39Перегрузка метода по категории значения объекта, слайд №40Перегрузка метода по категории значения объекта, слайд №41

Содержание

Вы можете ознакомиться и скачать презентацию на тему Перегрузка метода по категории значения объекта. Доклад-сообщение содержит 41 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Перегрузка метода по категории значения объекта, слайд №1
Описание слайда:

Слайд 2





Перегрузка метода по категории значения объекта
Для перегрузки метода по категории значения объекта используются символы & и &&
Описание слайда:
Перегрузка метода по категории значения объекта Для перегрузки метода по категории значения объекта используются символы & и &&

Слайд 3





Перегрузка метода по категории значения объекта
Описание слайда:
Перегрузка метода по категории значения объекта

Слайд 4





Вывод типов шаблонов
Компилятор использует expr для вывода двух типов: T и ParamType
Описание слайда:
Вывод типов шаблонов Компилятор использует expr для вывода двух типов: T и ParamType

Слайд 5





Три возможные ситуации при выводе типа шаблона
Тип выводимый для T зависит не только от expr, но и от ParamType
Описание слайда:
Три возможные ситуации при выводе типа шаблона Тип выводимый для T зависит не только от expr, но и от ParamType

Слайд 6





Случай 1: ParamType ссылка или указатель, но не универсальная ссылка 
Правила вывода:
Если тип expr – ссылка, то ссылочная часть игнорируется
Затем тип expr сопоставляется с типом ParamType и выводится тип T
Описание слайда:
Случай 1: ParamType ссылка или указатель, но не универсальная ссылка Правила вывода: Если тип expr – ссылка, то ссылочная часть игнорируется Затем тип expr сопоставляется с типом ParamType и выводится тип T

Слайд 7





Случай 1: ParamType ссылка или указатель, но не универсальная ссылка 
Другой пример:
Описание слайда:
Случай 1: ParamType ссылка или указатель, но не универсальная ссылка Другой пример:

Слайд 8





Случай 1: ParamType ссылка или указатель, но не универсальная ссылка 
С указателями все работает точно также:
Описание слайда:
Случай 1: ParamType ссылка или указатель, но не универсальная ссылка С указателями все работает точно также:

Слайд 9





Путаница с T&&
В С++ существует небольшая путаница насчет T&&, так как в разных контекстах оно может обозначать rvalue – ссылки и универсальную ссылку. Например:
Описание слайда:
Путаница с T&& В С++ существует небольшая путаница насчет T&&, так как в разных контекстах оно может обозначать rvalue – ссылки и универсальную ссылку. Например:

Слайд 10





Универсальные ссылки / краткий обзор
Если T&& является универсальной ссылкой, то она может быть как lvalue – ссылкой, так и rvalue – ссылкой. Такая ссылка может возникнуть только в шаблонном коде, либо в auto при выводе типов.
Правила вывода для универсальных ссылок:
Если expr – lvalue, то и T, и ParamType выводятся как lvalue – ссылки. Это единственная ситуация, где T может быть ссылкой.
Если expr – rvalue, то применяются «обычные» правила из ситуации 1
Описание слайда:
Универсальные ссылки / краткий обзор Если T&& является универсальной ссылкой, то она может быть как lvalue – ссылкой, так и rvalue – ссылкой. Такая ссылка может возникнуть только в шаблонном коде, либо в auto при выводе типов. Правила вывода для универсальных ссылок: Если expr – lvalue, то и T, и ParamType выводятся как lvalue – ссылки. Это единственная ситуация, где T может быть ссылкой. Если expr – rvalue, то применяются «обычные» правила из ситуации 1

Слайд 11





Случай 2: ParamType универсальная ссылка
Описание слайда:
Случай 2: ParamType универсальная ссылка

Слайд 12





Случай 3: ParamType не ссылка и не указатель
Правила вывода:
Если тип expr – ссылка, то ссылочная часть игнорируется
Если expr – const, игнорировать константность
Описание слайда:
Случай 3: ParamType не ссылка и не указатель Правила вывода: Если тип expr – ссылка, то ссылочная часть игнорируется Если expr – const, игнорировать константность

Слайд 13





Случай 3: ParamType не ссылка и не указатель
Для переданных указателей игнорируется только const, который говорит, что указатель не может указывать ни на что другое, второй const сохраняется
Описание слайда:
Случай 3: ParamType не ссылка и не указатель Для переданных указателей игнорируется только const, который говорит, что указатель не может указывать ни на что другое, второй const сохраняется

Слайд 14





Запомнить
При выводе типа в шаблонах, ссылочные фактические параметры трактуются как не ссылочные
При выводе типа с формальным параметром – унверсальной ссылкой lvalue аргументы трактуются не обычным путем
При выводе типа для формального параметра «по значению» модификатор const игнорируется
Описание слайда:
Запомнить При выводе типа в шаблонах, ссылочные фактические параметры трактуются как не ссылочные При выводе типа с формальным параметром – унверсальной ссылкой lvalue аргументы трактуются не обычным путем При выводе типа для формального параметра «по значению» модификатор const игнорируется

Слайд 15





Что будет выведено на экран и почему?
Описание слайда:
Что будет выведено на экран и почему?

Слайд 16





Reference Wrapper
std::ref(T&) – находится в <functional> и может неявно приводится к (T&)
Описание слайда:
Reference Wrapper std::ref(T&) – находится в <functional> и может неявно приводится к (T&)

Слайд 17





Вывод типа для auto
Правила вывода типа для auto точно такие же, как и для шаблонов с одним исключением. Посмотрим примеры:
Описание слайда:
Вывод типа для auto Правила вывода типа для auto точно такие же, как и для шаблонов с одним исключением. Посмотрим примеры:

Слайд 18





Исключение для вывода типа auto
Вспомним варианты синтаксиса инициализации
Описание слайда:
Исключение для вывода типа auto Вспомним варианты синтаксиса инициализации

Слайд 19





Синтаксис λ - функции / замыкания
[capture] (params) mutable exception_attribute  ret_type { body }
[capture] (params)  ret_type { body }
[capture] (params) { body }
[capture] { body }
Описание слайда:
Синтаксис λ - функции / замыкания [capture] (params) mutable exception_attribute ret_type { body } [capture] (params) ret_type { body } [capture] (params) { body } [capture] { body }

Слайд 20





Сapture λ - функции 
Этот раздел λ - функции позволяет захватывать внешние переменные как по значению, так и по ссылке
Возможные варианты:
[a, &b] – а захвачено по значению, b – по ссылке
[this] – захватывает указатель this текущего объекта
[&] – захватывает все локальные переменные по ссылке
[=] – захватывает все локальные переменные по значению
Описание слайда:
Сapture λ - функции Этот раздел λ - функции позволяет захватывать внешние переменные как по значению, так и по ссылке Возможные варианты: [a, &b] – а захвачено по значению, b – по ссылке [this] – захватывает указатель this текущего объекта [&] – захватывает все локальные переменные по ссылке [=] – захватывает все локальные переменные по значению

Слайд 21





Правила вывода возвращаемого значения λ - функции
 (до С++14) 
Если функция состоит из одной строчки return, то компилятор выводит тип возвращаемого значения по этой строчке, иначе – тип возвращаемого значения void.
 (c С++14)
Компилятор находит строчку с return и выводит тип возвращаемого значения из неё
Описание слайда:
Правила вывода возвращаемого значения λ - функции  (до С++14) Если функция состоит из одной строчки return, то компилятор выводит тип возвращаемого значения по этой строчке, иначе – тип возвращаемого значения void. (c С++14) Компилятор находит строчку с return и выводит тип возвращаемого значения из неё

Слайд 22





Тип λ - функции 
Тип λ - функции знает только компилятор, но это не значит, что мы не можем хранить её в переменной, type - deduce позволяет нам работать с ним, не зная его.
Описание слайда:
Тип λ - функции Тип λ - функции знает только компилятор, но это не значит, что мы не можем хранить её в переменной, type - deduce позволяет нам работать с ним, не зная его.

Слайд 23





Пример λ - функции
Описание слайда:
Пример λ - функции

Слайд 24





Пример λ - функции
Описание слайда:
Пример λ - функции

Слайд 25





Пример захвата переменных
Описание слайда:
Пример захвата переменных

Слайд 26





Пример захвата переменных
Описание слайда:
Пример захвата переменных

Слайд 27





Для С++11 сказочка с выводом auto - типов закончилась
А вот С++14 расширяет возможность использования auto, позволяя использовать auto в возвращаемых значениях функций и в формальных параметрах λ – функций. 
Причем в этих контекстах вывод типа для auto совсем ничем не отличается от шаблонного вывода
Описание слайда:
Для С++11 сказочка с выводом auto - типов закончилась А вот С++14 расширяет возможность использования auto, позволяя использовать auto в возвращаемых значениях функций и в формальных параметрах λ – функций. Причем в этих контекстах вывод типа для auto совсем ничем не отличается от шаблонного вывода

Слайд 28





auto в параметрах λ – функций
Описание слайда:
auto в параметрах λ – функций

Слайд 29





Decltype вывод типов
Decltype объявляет тип, как auto, но по выражению, переданному в него
Синтаксис: 
	decltype(expr)
Описание слайда:
Decltype вывод типов Decltype объявляет тип, как auto, но по выражению, переданному в него Синтаксис: decltype(expr)

Слайд 30





Примеры очевидного поведения decltype
Описание слайда:
Примеры очевидного поведения decltype

Слайд 31





Правила вывода decltype
1) Насколько возможно не изменять тип своего аргумента
2) Для lvalue выражения типа T отличного от простого имени объекта всегда выводится T&
Описание слайда:
Правила вывода decltype 1) Насколько возможно не изменять тип своего аргумента 2) Для lvalue выражения типа T отличного от простого имени объекта всегда выводится T&

Слайд 32





Использование decltype в С++11
В С++11 decltype наиболее часто использовался в шаблонных функциях, где тип возвращаемого значения зависел от передаваемых им аргументов.
Описание слайда:
Использование decltype в С++11 В С++11 decltype наиболее часто использовался в шаблонных функциях, где тип возвращаемого значения зависел от передаваемых им аргументов.

Слайд 33





Trailing return type syntax
Описание слайда:
Trailing return type syntax

Слайд 34





В С++14 мы можем избежать такого синтаксиса
Но, к сожалению, следующий вызов не скомпилируется (почему?)
Описание слайда:
В С++14 мы можем избежать такого синтаксиса Но, к сожалению, следующий вызов не скомпилируется (почему?)

Слайд 35





Исправляем: auto c правилами decltype
А как быть с таким вариантом? (Не Visual Studio)
Описание слайда:
Исправляем: auto c правилами decltype А как быть с таким вариантом? (Не Visual Studio)

Слайд 36





Исправляем: добавляем универсальную ссылку
Описание слайда:
Исправляем: добавляем универсальную ссылку

Слайд 37





Perfect forwarding
Какой недостаток у данной функции?
Описание слайда:
Perfect forwarding Какой недостаток у данной функции?

Слайд 38





Perfect forwarding
Если arg lvalue – перемещения не будет
Если arg rvalue – перемещение будет
Описание слайда:
Perfect forwarding Если arg lvalue – перемещения не будет Если arg rvalue – перемещение будет

Слайд 39





Теперь вернемся к примеру с authAndAccess
Описание слайда:
Теперь вернемся к примеру с authAndAccess

Слайд 40


Перегрузка метода по категории значения объекта, слайд №40
Описание слайда:

Слайд 41





На этом всё
Описание слайда:
На этом всё



Похожие презентации
Mypresentation.ru
Загрузить презентацию