10
анықтаудан кейін сілтеменің мәні сол объектінің адресі болады. Мысалы:
int
k=2;
int
& ref=k; сілтемені анықтауда‘&’ символы типтің бөлігі болып
табылмайды, яғни ref
int
типті және дәл осылай программада қабылдануы
керек.
Функциональді түрде сілтеме өзін-өзі қарапайым типті сияқты
айнымалы ретінде ұстайды. Нұсқауыш үшін керек болатындай, сілтеме
«қарайтын» жады бөлігінің мәнін иемдену үшін қайта атауды нақты
орындау қажет емес.
Сілтеме айнымалы не көрсеткішке ұқсас толық құқылы объект емес.
Инициализациядан кейін сілтеменің мәнін өзгертуге болмайды, ол әрқашан
инициализациямен байланысқан жады бөлігіне «қарайды». Бір де бір
операция сілтемеге әсер етпей, онымен байланысқан объектіге қатысты
болады. Мұны сілтеменің негізгі қасиеті деп есептеуге болады. Сонымен,
сілтеме толықтай бастапқы объект атымен бірдей.
Анықталған болсын:
int
ar[]={1,2,3,4}; //ar - массив
int
*p=ar; //р - нұсқауыш
int
& ref=ar[0]; //ref – массивтің бірінші элементіне сілтеме
int
*& rp=ar; //нұсқауышқа сілтеме (массив атына)
Келтірілген мысалдан сілтемелер мен нұсқауыштарға келесі теңдіктер
орындалады:
p==&ref, *p==ref, rp==ar; ref== ar[0].
Сілтемеге Sizeof
операциясын қолдану нәтижесі оның өлшемі емес,
онымен аталған объектінің өлшемі болып табылады.
Сілтеме шын объект болмаған соң, сілтемені анықтауда және
қолдануда шектеулер бар. Біріншіден, сілтеме
void
Достарыңызбен бөлісу: