Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет93/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   89   90   91   92   93   94   95   96   ...   256
4.6.7 Стандартные значения параметров 
В общем случае у функции может быть больше параметров, чем в самых простых и наиболее часто 
используемых случаях. В частности, это свойственно функциям, строящим объекты (например, 
конструкторам, см. $$5.2.4). Для более гибкого использования этих функций иногда применяются 
необязательные параметры. Рассмотрим в качестве примера функцию печати целого числа. Вполне 
разумно применить в качестве необязательного параметра основание счисления печатаемого числа, 
хотя в большинстве случаев числа будут печататься как десятичные целые значения. Следующая 
функция 
void print (int value, int base =10); 
void F() 

print(31); 
print(31,10); 
print(31,16); 
print(31,2); 

напечатает такие числа: 
31 31 1f 11111 
Вместо стандартного значения параметра можно было бы использовать перегрузку функции print
void print(int value, int base); 
inline void print(int value) { print(value,10); } 
Однако в последнем варианте текст программы не столь явно демонстрирует желание иметь одну 
функцию print, но при этом обеспечить удобную и краткую форму записи. 
Тип стандартного параметра сверяется с типом указанного значения при трансляции описания функции, 
а значение этого параметра вычисляется в момент вызова функции. Задавать стандартное значение 
можно только для завершающих подряд идущих параметров: 
int f(int, int =0, char* =0); // 
нормально 
int g(int =0, int =0, char*); // 
ошибка 
int h(int =0, int, char* =0); // 
ошибка 


Бьерн Страуструп.
Язык программирования С++ 
 
114 
Отметим, что в данном контексте наличие пробела между символами * и = весьма существенно, 
поскольку *= является операцией присваивания: 
int nasty(char*=0); // синтаксическая ошибка 


Достарыңызбен бөлісу:
1   ...   89   90   91   92   93   94   95   96   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет