gpt4 book ai didi

c++ - 如何禁止获取对象的地址

转载 作者:行者123 更新时间:2023-11-30 01:11:53 27 4
gpt4 key购买 nike

我正在研究一个小类 Foo 并且正在考虑编写 register Foo foo;

我知道要使 register 真正起作用,您不能使用 foo 的地址。

但这并没有在编译时强制执行。有什么办法可以禁止服用 &foo 吗?

最佳答案

如果想禁用运营商的地址,那么你可以这样写

Foo* operator&() = delete;

Foo 的类声明中。

但这里有一点或具有讽刺意味:您只能在 C++11 及更高版本中执行此操作,并且 register 在这些标准中已被弃用!无论如何,这只是部分解决方案:您仍然可以使用 std::addressof,甚至引用转换为 char& 并获取它的地址。

在 C++11 之前,您可以声明您自己的 operator& 版本,将其标记为private 实现它。大多数情况下编译会失败(除非您在类的方法中使用 &),并且链接时总是会失败。但这仍然可以通过对 char& 的引用转换来规避。

关于c++ - 如何禁止获取对象的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35152191/

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