gpt4 book ai didi

C++ 通过指针访问对象而不是直接访问

转载 作者:行者123 更新时间:2023-11-27 22:39:08 28 4
gpt4 key购买 nike

在一些代码中我看到了以下内容:(&object)->something.

  1. object.something 有什么优势吗?
  2. 编译器是否以某种方式优化了此类代码,或者它是否以任何方式更快?

最佳答案

如果 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]

(在没有优化的情况下它们是相同的;打开优化...整个调用都被丢弃,所以留给好奇的读者)

关于C++ 通过指针访问对象而不是直接访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50489532/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com