Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
23.03.2015
Размер:
174.59 Кб
Скачать

Аргументи за замовчуванням

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

void Showint ( int I, bool Flag = true, char symbol = '\n' ) ;

Showint ( 1, false, 'a' ) ;

Showint ( 2, false ) ;

Showint ( 3 ) ;

У першому випадку всі три аргументи задані явно, тому робота функції здійснюється у звичайному режимі. У другому виклику у функцію передається два параметри із трьох, причому замість останнього аргументу підставляється значення за замовчуванням, а саме символ '\n'. Третій варіант звертання до функції передає тільки один цілочисельний параметр, а в якості інших аргументів використовуються значення за замовчуванням: логічна змінна зі значенням true і символьна змінна зі значенням '\n'.

Для використовуваних параметрів за замовчуванням існує обов'язкове правило: усі параметри праворуч від аргументу за замовчуванням повинні також мати значення за замовчуванням. Так, в наведеному вище прототипі неможна було б, вказавши значення параметру за замовченням для цілочисельної змінної пропустити визначення будь якого з інших аргументів за замовченням.

Розглянемо приклад, у якім здійснюється вивід знакового числа подвійної точності із вказівкою кількості значущих символів і виводу знака числа. Інакше кажучи, визначимо функцію, що приймає в якості одного з параметрів число виведених знаків. Крім того, передбачимо можливість виводу числа без знака. Для цієї мети служить параметр flag. Для рішення поставленого завдання можна скористатися функцією зведення числа в ступінь pow і функцією узяття модуля від довгого числа із плаваючою крапкою fabsl, прототипи яких знаходяться в заголовному файлі math.h:

#include <iostream.h> // містить функції введення/виводу

#include <math.h> // містить математичні функції

void Out ( // прототип функції виводу на екран числа із заданою кількістю

// десяткових знаків і знака числа

double n, // число, виведене на екран

double s = 1, // кількість десяткових знаків, виведене на екран ( за замовчуванням – 1)

bool flag = true) ; // прапор виводу на екран знака числа ( за замовчуванням – true)

void main ()

{

double pi = - 3.141592654 ; // оголошення й ініціалізація змінної pi типу double

Out ( pi, 4, false ) ; // виводить на екран 3,1415

Out ( pi, 2 ) ; // виводить на екран -3,14

Out ( pi ) ; // виводить на екран -3,1

}

void Out ( double n, double s, bool flag)

{

if ( ! flag ) n = fabsl ( n ) ; // якщо параметр flag рівний false, те n = | n |

n = ( int ) ( n * pow (10, s)) ; // домножимо число на 10s і перетворимо до цілого типу,

// відкидаючи зайві десяткові знаки

n /= pow (10,s) ; // ділимо число на 10s

cout << num << ' \n' ; // друкуємо число й переводимо каретку в початок наступного рядка

}

У тілі програми проводиться виклик однієї й тієї ж функції Out з різним числом параметрів для виводу значення змінної подвійної точності pi.

Величина, що вказується в аргументах за замовчуванням, може бути не тільки константним вираженням - вона може бути глобальною змінною або значенням, що вертаються деякої функцією.