首页 >后端开发 >C++ >如何在 C 中有效地实现 Const 和非 Const Getter?

如何在 C 中有效地实现 Const 和非 Const Getter?

Barbara Streisand
Barbara Streisand原创
2024-12-02 17:43:15520浏览

How Can I Efficiently Implement Both Const and Non-Const Getters in C  ?

克服重复 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn