克服重复 Getter 的 Const 难题
在同时具有 const 和非常量版本的类中实现 getter 时会出现困境。编译错误会阻碍使用另一种方法的实现。此外,从非常量版本调用常量版本是必要的。
优雅的解决方案
Effective C 提出了一种非常规但有效的解决方案:实现非-const 版本,通过从 const 版本中删除 const 来实现。虽然不美观,但这种方法保证了安全性,因为调用函数是非常量的。因此,从 const 对象中丢弃 const 是允许的。
示例:
class Foo { public: const int& get() const { // Non-trivial work return foo; } int& get() { return const_cast<int&>(const_cast<const Foo*>(this)->get()); } };
以上是如何在 C 中有效地实现 Const 和非 Const Getter?的详细内容。更多信息请关注PHP中文网其他相关文章!