Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 8.docx
Скачиваний:
3
Добавлен:
25.11.2018
Размер:
30.55 Кб
Скачать

10. Когда имеет смысл пользоваться ссылочными аргументами.

Использование ссылочных аргументов имеет два больших преимущества:

Предоставляет возможность вносить изменения в объекты данных в вызывающей функции.

Позволяет повысить быстродействие программы, передавая ей ссылку вместо всего объекта данных.

Эти два преимущества являются также причиной использования указателей в качестве аргументов. Такое использование целесообразно, поскольку ссылочные аргументы, по сути, можно рассматривать как еще один интерфейс программного кода, использующего указатели.

11. В каких случаях функция использует передаваемые ей данные, не

подвергая их изменениям.

Если размеры объекта данных невелики, например, встроенный тип данных или структура небольших размеров, происходит их передача по значению.

Если объектом данных является массив, используйте указатель, поскольку это для вас единственный приемлемый вариант. Сделайте этот указатель указателем на const.

Если объект данных является большой структурой, то, чтобы повысить эффективность программы, используйте указатель const или ссылку const. Вы сэкономите время и пространство памяти, необходимое для создания копии структуры или для построения класса. Назначьте этому указателю или ссылке статус const.

Если объект данных представляет собой объект класса, воспользуйтесь ссылкой const.

Т.об. Стандартный способ передачи объекта класса в качестве аргумента — это передача по значению

12. В каких случаях функция модифицирует данные для вызывающей

функции.

Если объект данных является встроенным типом данных, воспользуйтесь указателем.

Если вам встретится программный код, подобный fixit(&x), где х — это величина типа int, то есть все основания полагать, что данная функция предназначена для модификации х.

Если объектом данных является массив, используйте единственно возможный для вас выбор, т.е. указатель.

Если объектом данных является структура, используйте ссылку или указатель.

Если объектом данных является объект класса, используйте ссылку.

13. Аргументы, заданные по умолчанию.

Такие аргументы представляют собой значения, которые

используются автоматически, если вы пропускаете соответствующий

фактический параметр в обращении к функции.

14. В каком порядке в заголовке функции присваиваются значения,

заданные по умолчанию.

Например, прототип функции harpo() допускает реализацию вызова функции с одним, двумя или тремя аргументами:

beeps = harpo (2); // то же, что и harpo (2,4,5)

beeps = harpo (1,8); // то же, что и (1,8,5)

beeps = harpo (8,7,6) ; // ни одно из

// значений аргумента, заданных по умолчанию, не используется

Фактические аргументы присваиваются соответствующим формальным аргументам в направлении "слева направо", вы не можете пропустить ни одного аргумента. Таким образом, следующее выражение недопустимо:

beeps = harpo (3, ,8) ; // неправильно, аргументу m не присвоено значение 4

15. Полиморфизм функций (перегрузка функции)

Полиморфизм функций, который еще называют перегрузкой функций, предоставляет вам возможность воспользоваться несколькими функциями, имеющими одно и то же имя. Слово "полиморфизм" означает "иметь множество форм", следовательно, полиморфизм функций позволяет функции иметь множество форм. Аналогично выражение "перегрузка функций" означает, что вы можете привязать более чем одну функцию к одному и тому же имени. Оба выражения означают одно и то же, но мы будем пользоваться выражением "перегрузка функций" — оно звучит более четко. Главную роль в использовании перегрузки функций играет список аргументов функции, который еще называют сигнатурой функции. Если две функции используют одно и то же число и типы аргументов в одном и том же порядке, то они имеют одну и ту же сигнатуру, при этом имя функции не имеет значения. C++ предоставляет вам возможность

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