在某些代码中我看到了以下内容:
(&object)->something
。
object.something
是否有任何优势?答案 0 :(得分:4)
如果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]
(已经没有优化它们是相同的;启用了optmizations ...整个调用被丢弃,所以留给好奇的读者)