Почему ссылки имеют типы, даже если они не являются объектами? - PullRequest
0 голосов
/ 29 февраля 2020
int a = 1;
int &b = a;

Здесь ссылка b имеет тип int, но с какой целью она имеет тип, когда она не является объектом? Что если этот тип отличается от объекта, на который он ссылается?

Ответы [ 2 ]

3 голосов
/ 29 февраля 2020

Цель наличия типизированных ссылок (то есть указателей) состоит в том, чтобы включить проверку типов (которая помогает отлавливать ошибки). Если вы объявите ссылку как другой тип, вы получите ошибку типа (вы можете привести ее, но это нужно сделать явно).

1 голос
/ 29 февраля 2020

Согласно книге Сумиты Арора «Компьютерные науки на C ++», ссылочные переменные часто обрабатываются как производный тип данных, в котором есть свойство хранения адресов переменных. Это средство предоставления псевдонима существующей переменной. Переменная может быть вызвана с помощью этого альтернативного имени. Предположим, что когда мы хотим выполнить обмен двух переменных с использованием ссылок.

     // function definition to swap the values.
void swap(int &x, int &y) {
   int temp;
   temp = x; // save the value at address x 
   x = y;    // put y into x 
   y = temp; // put x into y 

   return;
}
void main () {
   // local variable declaration:
   int a = 100;
   int b = 200;

   cout << "Before swap, value of a :" << a << endl;
   cout << "Before swap, value of b :" << b << endl;

   /* calling a function to swap the values using variable reference.*/
   swap(a, b);

   cout << "After swap, value of a :" << a << endl;
   cout << "After swap, value of b :" << b << endl;
   getch();
}

Здесь обмен выполняется с использованием метода вызова по ссылке, и изменения также будут отражены в реальных параметрах. Здесь производится изменение переданных параметров. довольно легко, что служит одной из его реальных целей. Когда бы ни происходило сравнение с целочисленной переменной и ссылочной переменной во время замены, возможной ошибкой может быть ошибка несоответствия типов, так как адрес сравнивается со значением. Вот целочисленные ссылки используются для определить, что он может хранить адреса только целочисленных переменных, что, возможно, является механизмом, разработанным для устранения ошибок несоответствия типов, и заставить компилятор определить, что данный адрес содержит целое число или тип данных, заданный ссылкой, так что программа работает гладко и выполняет операции. Ссылки также исключает случайные указатели и часто предоставляет простой в использовании интерфейс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...