Язык программирования C++ для профессионалов



         

Передача параметров - часть 2


Значение такого приема растет вместе с ростом программы.

Отметим, что семантика передачи параметров отличается от семантики присваивания. Это различие существенно для параметров, являющихся const или ссылкой, а также для параметров с типом, определенным пользователем.

Литерал, константу и параметр, требующий преобразования, можно передавать как параметр типа const&, но без спецификации const передавать нельзя. Допуская преобразования для параметра типа const T&, мы гарантируем, что он может принимать значения из того же множества, что и параметр типа T, значение которого передается при необходимости с помощью временной переменной.

float fsqrt(const float&); // функция sqrt в стиле Фортрана

void g(double d) { float r;

r = fsqrt(2.0f); // передача ссылки на временную // переменную, содержащую 2.0f r = fsqrt(r); // передача ссылки на r r = fsqrt(d); // передача ссылки на временную // переменную, содержащую float(d) }

Запрет на преобразования типа для параметров-ссылок без спецификации const введен для того, чтобы избежать нелепых ошибок, связанных с использованием при передаче параметров временных переменных:

void update(float& i);

void g(double d) { float r;

update(2.0f); // ошибка: параметр-константа update(r); // нормально: передается ссылка на r update(d); // ошибка: здесь нужно преобразовывать тип

}

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  

Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

вопросы | »

|

учебники

|

для печати и PDA

Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование




Содержание  Назад  Вперед