Хелпикс

Главная

Контакты

Случайная статья





Аргументы по умолчанию



Аргументы по умолчанию

Формальному параметру может быть задан аргумент по умолчанию (default argument). Обычно это константа, которая часто встречается при вызове функции. Использование аргумента по умолчанию позволяет не писать его значение при каждом вызове. Рассмотрим следующую функцию:

Int sqr_or_power (int n, int k = 2) // k = 2 по умолчанию

{

if (k==2)

   return (n * n);

else

  return (sqr_or_power (n, k-1)*n);

}

Здесь предполагается, что чаще всего эта функция применяется для вычисления значения n в квадрате.

Sqr_or_power (i+5) //вычислит (i+5)*(i+5)

Sqr_or_power (i+5, 3) //вычислит (i+5) в кубе

Только несколько последних параметров функции могут иметь значения по умолчанию:

Void foo(int i, int j = 7); //допустимо

Void foo(int i = 3, int j); //недопустимо

Void foo(int i, int j = 3, int k = 7);       //допустимо

Void foo(int i = 1, int j = 2, int k = 3); //допустимо

Void foo(int i, int j = 2, int k);             //недопустимо

 

 

3. Область видимости

 

В базовом языке существует два основных вида видимости (scope): локальная область видимости и область видимости файла. Локальная область видимости относится к блоку. Тело функции – это пример блока; оно содержит набор объявлений, включая параметры функции. В область видимости файла входят имена, которые являются внешними (глобальными).

Основное правило области видимости состоит в том, что идентификаторы доступны только внутри блока, к котором они объявлены. Они не известны за границами блока. Вот простой пример:

{        

int a = 2; //a вне блока

cout << a << endl; // напечатается 2

{

int a = 7; // a внутри блока

cout << a << endl; // напечатается 7

}       // выход из внутреннего блока

cout << ++a << endl;  // напечатается 3

}

Каждый блок вводит свою собственную номенклатуру. Внешнее по отношению к блоку имя действительно до тех пор, пока оно не переопределено внутри блока. Если оно переопределено, то внешнее имя скрывается (или маскируется) от внутреннего блока. Вложенность блоков может быть произвольной глубины, которая определяется ограничениями системы.

В С++ имеется оператор разрешения области видимости : :. При использовании формы  : : переменная он позволяет получить доступ к переменной, внешней по отношению к данной области видимости.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.