Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відповіді на питання по мові С++по лекціям.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
265.22 Кб
Скачать
  1. Використання посилальних аргументів.

Існують дві головні причини використання посилальних аргументів:

  • Щоб зробити можливим зміні об’єкту даних функції, що викликається.

  • Щоб прискорити роботу програми за рахунок передачі посилання замість повної копії об’єкту даних.

По цім двом причинам в якості аргументу можна використовувати показник. Розглянемо рекомендації у яких випадках слід використовувати посилання, показник або передачу за значенням.

Функція використовує дані, що передаються, без їх змін:

  • Коли об’єкт даних має малий розмір, наприклад, значення вбудованного типу даних або невелику структуру, то передавайте його за значенням.

  • Коли об’єкт даних є масивом, використовувайте показник, оскільки це єдине найприйнятніший варіант. Зробити об’яву зі специфікацією const.

  • Коли об’єкт даних є структурою найприйнятнішого розміру, то використовуйте const-показник або const-посилання для збільшення ефектності програми. У цьому випадку вдається зберегти час і простір, який необхідний для копіювання структури або побудови класу. Зробити об’яву показника або посилання зі специфікацією const.

  • Коли об’єкт даних є об’єктом класу, використовуйте посилання за спеціфікатором const. Семантика структури класу найчастіше потребує застосування посилання. Таким чином. Стандартом є передача об’ектів класу за посиланням.

  1. Аргументи, що визначаємо за замовчуванням.

Розглянемо інструментальний засіб С++ – аргументи, що визначаємо за замовчуванням. Такі інструменти уявляють собою значення, котрі використовуються автоматично, коли відповідні фактичні параметри у звернені до функції опущені. Наприклад, коли функція void wow(int n) описана так, що n за замовчуванням має значення 1, то звернення до функції wow(int n) визначає теж саме, що і виклик wow(1). Ця властивість дозволяє більш гнучко використовувати функції.

Щоб встановити значення за замовчуванням слід скористуватися прототипом функції. Метод складається з того, що значення аргументам присвоюються в прототипі. Наприклад, нехай маємо прототип, відповідний наступному опису функції left():

char *left(const char * str, int n=1);

Треба, щоб ця функція повертала новий рядок,тому її типом буде char*, тобто показник на значення типа char. Коли потрібно зберегти вхідний рядок незмінним, слід використовувати спеціфікатор const для першого аргументу. А для того, щоб аргумент n мав значення 1, яке визначене за замовчуванням, присвоюємо це значення аргументу n. Застосоване за замовчуванням значення аргументу – це значення, яке задається при ініціалізації. Таким чином, даний прототип ініціалізує n значенням 1. Коли аргумент n опускається, то для нього приймається значення 1, але коли даний аргумент передається, то нове значення пере визначає значення 1.

Розглянемо інструментальний засіб С++ – аргументи, що визначаємі за замовчуванням. Такі інструменти уявляють собою значення, котрі використовуються автоматично, коли відповідні фактичні параметри у звернені до функції опущені. Наприклад, коли функція void wow(int n) описана так, що n за замовчуванням має значення 1, то звернення до функції wow(int n) визначає теж саме, що і виклик wow(1). Ця властивість дозволяє більш гнучко використовувати функції.

Щоб встановити значення за замовчуванням слід скористуватися прототипом функції. Метод складається з того, що значення аргументам присвоюються в прототипі. Наприклад, нехай маємо прототип, відповідний наступному опису функції left():

char *left(const char * str, int n=1);

Треба, щоб ця функція повертала новий рядок,тому її типом буде char*, тобто показник на значення типа char. Коли потрібно зберегти вхідний рядок незмінним, слід використовувати спеціфікатор const для першого аргументу. А для того, щоб аргумент n мав значення 1, яке визначене за замовчуванням, присвоюємо це значення аргументу n. Застосоване за замовчуванням значення аргументу – це значення, яке задається при ініціалізації. Таким чином, даний прототип ініціалізує n значенням 1. Коли аргумент n опускається, то для нього приймається значення 1, але коли даний аргумент передається, то нове значення пере визначає значення 1.

Для функції зі списком аргументів застосованими за замовчуванням значення присвоюються в напряму справо наліво. Пропуск аргументів не допускається.