Глава 11. Функции________________________________________251
Использование операции разыменования в возвращаемом типе является одним из способов возврата значения по ссылке (return a value by reference), но предпочтительнее в таком случае операция получения адреса — а почему, вы сейчас узнаете.
Возврат с использованием операции получения адреса
При необходимости вернуть объект по ссылке предпочтительнее использовать операцию получения адреса (&). Знак операции располагается там же, где и в случае разыменования — между возвращаемым типом и именем функции, но обладает иным эффектом.
Для обращения к значению объектов, возвращенных с помощью операции разыменования, необходим специальный синтаксис. Если объект относится к простому типу данных (например, int), то до его значения можно добраться разыменованием:
»
int а = 5;
int *b = &a; // b — это псевдоним для а cout « *b « endl; // печать значения Ь (обратите
// внимание на присутствие звездочки)
(Здесь нам совершенно неважно, откуда берется значение переменной b — с равным успехом ей можно было бы присвоить значение, возвращенное функцией. Важным является то, каким образом мы обращаемся к значению.)
Но если b сделать ссылкой, то все становится гораздо изящнее:
int a = 5;
int &b = &a;
cout « b « endl; // выводит значение b, равное 5, // а не его адрес
Разумеется, не существует никаких строгих постановлений, регламентирующих использование той или иной операции — разыменования или получения адреса. Многие функции, применяемые для работы с char* (строки в стиле С, которые до сих пор присутствуют во многих программах), требуют char* или const char*, поэтому для них более естественно и удобно использовать операцию разыменования. Но все же в прочих ситуациях старайтесь возвращать объекты по ссылке через операцию получения адреса.
Имена функций
Строгая типизированность C++ проявляется во многих моментах. Одной из .черт, отличающих C++ от таких популярных языков, как Visual Basic, Delphi