gpt4 book ai didi

c++ - 何时使用 addressof(x) 而不是 &x?

转载 作者:IT老高 更新时间:2023-10-28 13:23:37 27 4
gpt4 key购买 nike

在获取对象的地址时,如何确定是否需要 addressof(x) 而不是 &x


似乎这个问题令人困惑,所以需要澄清一下:

addressof 显然绕过了重载的地址操作符。 我已经知道了。

我想知道的是:
我怎么知道这是否是我真正想做的事情? (尤其是在模板内等时)

是否有某种“规则”可以帮助我确定何时需要 addressof 而不是 &
毕竟,它们都返回对象的“地址”,那么我什么时候使用呢?

最佳答案

您在必要时使用 std::addressof。可悲的是,“当你必须”包括任何时候你在模板代码中工作并想要将未知类型的变量 TT& 变成一个诚实的指针到那个变量的内存中。

因为 C++ 委员会愚蠢地允许引用运算符的重载(几乎没有合法目的),所以用户可以用某种类型来实例化您的模板,而您不能使用引用运算符来获取实际的指针. std::addressof 是一种解决使用这种可疑 C++ 功能的用户的方法,以便执行该语言应该保证的工作。

简而言之,这是一个针对语言愚蠢的库修复。如果您想确保用户不会破坏您的代码,请在模板代码中使用它而不是 &。如果可以信任您的用户不会使用这个构思不周的功能,那么您可以使用 &

关于c++ - 何时使用 addressof(x) 而不是 &x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820307/

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