Мне интересно, что может дать адрес this
?Или оба неверны?
Также не указан адрес this
, потому что абстрактная машина C ++ не определяет для него адрес.this
похоже на 0
.Вы не можете получить адрес 0, это не сущность с хранилищем, просто какое-то значение.Так что же это делает?
int const& i = 0;
Он создает временный объект, инициализирует его с 0, а затем привязывает ссылку на него.То же самое происходит с вашим кодом.Вы создаете ссылки на различные временные объекты, которые содержат значение из this
.
this
- это ключевое слово, обозначающее адрес объекта, для которого выполняется функция-член,Абстрактная машина C ++ не требует, чтобы она занимала хранилище, поэтому всегда (логически) это просто простое значение, например 0.
Есть смысл не требовать this
, чтобы занимать хранилище.Это позволяет реализовать C ++ через ABI, где this
передается в регистр (что обычно не адресуемо).Если &this
должен быть четко определен, то есть если this
должен быть адресуемым, это помешает реализации использовать регистр для передачи адреса.Стандарт C ++, как правило, направлен на то, чтобы не связывать реализации таким образом.