- •1. Встроенные функции. Назначение. Особенности. Преимущества и
- •2. Встроенные функции. Правила оформления и требования к функции.
- •3. Ссылочные переменные. Назначение ссылок.
- •5. Создание ссылочных переменных. Ссылки и указатели : сходсто и
- •6. Ссылки в роли параметров функции. Чем отличается передача
- •7. Как используя функцию с ссылкой в качестве параметра, защитить
- •8. Временные переменные, ссылочные аргументы и модификатор const.
- •9. Использование ссылок при работе со структурами.
- •10. Когда имеет смысл пользоваться ссылочными аргументами.
- •11. В каких случаях функция использует передаваемые ей данные, не
- •12. В каких случаях функция модифицирует данные для вызывающей
- •13. Аргументы, заданные по умолчанию.
- •14. В каком порядке в заголовке функции присваиваются значения,
- •15. Полиморфизм функций (перегрузка функции)
- •16. Приведите пример сигнатур, различие которых не позволяет
- •17. Когда целесообразно использовать перегрузку функции.
- •18.Шаблоны функций. Правила оформления. Пример.
- •19. Перегруженные шаблоны
- •20. Образование шаблонов и специализация.
Вопросы для повторения
1. Встроенные функции. Назначение. Особенности. Преимущества и
недостатки.
При использовании встраиваемой функции компилятор подставляет вместо вызова функции соответствующий код функции. При наличии подставляемого кода программе уже не надо выполнять переходы в другое место, а затем возвращаться назад. Таким образом, встраиваемые функции выполняются немного быстрее, чем обычные функции, однако за это нужно платить дополнительным расходом памяти. Выигрыш в быстродействии обычно минимален, если не считать случаев, когда функция сама по себе настолько компактна, что время, необходимое для ее выполнения, сопоставимо со временем, затрачиваемым на переход и возврат из функции. В этом случае
функция сама по себе обладает высоким быстродействием, так что максимальный выигрыш по времени вы получите тогда, когда эта функция выполняется в некотором критическом цикле и является основным потребителем машинного времени.
2. Встроенные функции. Правила оформления и требования к функции.
Чтобы воспользоваться этим средством, нужно выполнить
следующее:
Предпослать определению функции ключевое слово inline
Поместить определение этой функции (имеется в виду заголовок функции и весь программный код функции, а не только прототип) перед определениями всех функций, которые к ней обращаются. Компилятор не обязательно должен исполнять вашу просьбу о том, чтобы придать той или иной функции статус встраиваемой. Он может прийти к заключению, что ваша функция слишком большая, или вдруг обнаружит, что она обращается сама к себе (рекурсия для
встраиваемых функций не допускается), к тому же может случиться так, что компилятор, имеющийся в вашем распоряжении, не способен реализовать требуемое свойство.
3. Ссылочные переменные. Назначение ссылок.
Ссылка представляет собой имя, которое является альтернативным или псевдонимом для ранее объявленной переменной. Основное назначение ссылок — их использование в качестве формальных аргументов функций.
4. Создание ссылочных переменных. Символ & в языке С++.
В языках С и C++ используется символ & для обозначения адреса переменной. Язык C++ придает символу & дополнительный смысл и внедряет его для объявления ссылок.
5. Создание ссылочных переменных. Ссылки и указатели : сходсто и
различия.
Язык С++ позволяет использовать как ссылку, так и указатель, чтобы ссылаться на rats:
int rats = 101;
int & rodents = rats; // rodents — это ссылка
int * prats = &rats; // prats — это указатель
Ссылку необходимо инициализировать в момент, когда вы ее объявляете. Вы не
можете сначала объявить ссылку, а затем присвоить ей значение, как это делается в случае с указателем. Ссылка во многом аналогична указателю const. Нужно инициализировать ее в момент создания, и, как только ссылка засвидетельствует "свою верность" по отношению к конкретной переменной, она сохраняет ее до конца выполнения программы.
6. Ссылки в роли параметров функции. Чем отличается передача
параметров функции по ссылке и передача параметров функции по
значению.
Чаще всего ссылки используются в качестве параметров функции, при этом имя переменной в функции становится псевдонимом переменной из вызывающей программы. Такой метод передачи аргументов называется передачей по ссылке. Передача параметров по ссылке позволяет вызываемой функции получить доступ к переменным в вызывающей функции. Передача по значению, как известно, приводит к тому, что вызываемая функция работает только с копиями значений из вызывающей программы