我正在玩一个小班Foo,正在考虑写作register Foo foo;.
我知道,为了register实际工作,你不能拿地址foo.
但是在编译时并没有强制执行.我有什么方法可以禁止服用&foo吗?
如果想要禁用运算符的地址,那么你可以写
Foo* operator&() = delete;
在你的类声明中Foo.
但是这里有点或讽刺:你只能在C++ 11之后做到这一点并且register在这些标准中被弃用了!它无论如何只是一个部分解决方案:你仍然可以使用std::addressof,甚至引用 - 转换char&并获取它的地址.
在C++ 11之前,您可以声明自己的版本operator&,标记它private,而不是实现它.编译将在大多数时间失败(除非您&在类的方法中使用),并且链接时间将始终失败.但是仍然可以通过引用来避免这种情况char&.
| 归档时间: |
|
| 查看次数: |
83 次 |
| 最近记录: |