C ++ доступ к объекту через указатель вместо прямого доступа - PullRequest
0 голосов
/ 23 мая 2018

В каком-то коде я видел следующее: (&object)->something.

  1. Есть ли какое-либо преимущество у object.something?
  2. Компилятор каким-то образом оптимизирует такой код илиэто быстрее никак?

1 Ответ

0 голосов
/ 23 мая 2018

Если operator& не перегружен, то по сути это то же самое https://godbolt.org/g/iPTjRY:

auto v_1 = f_1.get(); 
auto v_2 = (&f_1)->get();

разрешается практически так же:

lea rax, [rbp-12]               ; load object address
mov rdi, rax                    ; move object address into rdi, not sure why not just: 'lea rdi, [rbp-12]'
call Foo::get() const           ; invoke the subroutine
mov DWORD PTR [rbp-4], eax      ; save the result at [rbp-4]

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

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