Как создаются временные объекты во время инициализации Reference? - PullRequest
2 голосов
/ 21 декабря 2011

Как временные объекты создаются при инициализации ссылки компилятором и что это значит?

EDIT

Из стандарта C ++:

12.2Временные объекты [class.tegoti] Временные объекты типа класса создаются в различных контекстах: , связывающих ссылку на значение (8.5.3), возвращая 1 значение (6.6.3)преобразование, которое создает значение prvalue (4.1, 5.2.9, 5.2.11, 5.4), генерирует исключение (15.1), вводит обработчик (15.3) и в некоторых инициализациях (8.5).

По этой ссылке: http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr382.htm

Когда создается временный объект для инициализации ссылочной переменной, имя временного объекта имеет ту же область, что и у ссылочной переменной.

1 Ответ

2 голосов
/ 21 декабря 2011

Из вашего редактирования: 12.2 утверждает, что временный объект создается в тех случаях, когда вы инициализируете константную ссылку, где она ссылается на значение.Например:

double d = 3.14;
const int &r = d;

компилятор преобразует этот код во что-то вроде этого:

  int temp = d;         // creates a temporary int
  const int &r = temp;  // reference is bound to that temporary

Время жизни временного объекта, связанного с константной ссылкой, - это время жизни ссылки.то есть временное уничтожается, когда ссылка выходит из области видимости.

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