|
||||
|
8.6.3 Ссылки Когда переменная описана как T amp;, то есть «ссылка на тип T», она должна быть инициализирована или объектом типа T, или объектом объектом, который может быть преобразован в T. Ссыка становится другим именем объекта. Например: int i; int amp; r = i; r = 1; // значение i становится 1 int* p = amp;r; // p указывает на i Значение ссылки не может быть изменено после инициализции. Заметьте, что обработка инициализации ссылки очень силно зависит от того, что ей присваивается. Если инициализатор для ссылки на тип T не является lvalue, то будет создан и инициализован инициализатором обект типа T. Тогда ссылка станет именем для этого объекта. Время жизни объекта, созданного таким способом, будет область видимости, в которой он создан. Например: double amp; rr = 1; допустимо, и rr будет указывать на объект типа double, содержащий значение 1.0. Заметьте, что ссылка на класс B может быть инициализирвана объектом класса D при условии, что B является открытым базовым классом класса D (в этом случае D есть B). Ссылки особенно полезны в качестве типов параметров. Например: struct B (* ... *); struct D : B (* ... *); int f(B amp;); D a; f(a); |
|
||