c++ - 为什么类中需要一个 const 函数和一个非常量函数?

标签 c++ constants sfml

我正在学习SFML,发现类resourceholder 中存在两个get 函数很奇怪。但它们实际上彼此完全相同。

我的问题是:为什么有两个get函数?

代码如下:

template <typename Resource, typename Identifier>
class ResourceHolder
{
    public:
        void                        load(Identifier id, const std::string& filename);

        template <typename Parameter>
        void                        load(Identifier id, const std::string& filename, const Parameter& secondParam);

        Resource&                   get(Identifier id);
        const Resource&             get(Identifier id) const;


    private:
        void                        insertResource(Identifier id, std::unique_ptr<Resource> resource);


    private:
        std::map<Identifier, std::unique_ptr<Resource>> mResourceMap;
};

最佳答案

它们不一样。一个返回 Resource &,另一个返回 const Resource &

这样在 const 对象上调用的 get() 返回一个 const 引用,在非 const 对象上调用的 get() 返回一个非 const引用。据推测,其目的是允许调用者更新此类正在包装的资源,但仅限于非常量对象。

关于c++ - 为什么类中需要一个 const 函数和一个非常量函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25822421/

相关文章:

c++ - 使用 FreeType2 在 Eclipse CDT 中完成代码

c++ - Spirit X3,如何在非 ascii 输入上解析失败?

c++ - extern const inside namespace 和 static const 类成员之间的区别?

Haskell 最小/最大双常数

c++ - 最大 SFML 纹理尺寸

c++ - 鼠标相对于 sf::view 的位置

c++ - 使用 textEntered 时,我无法使用退格键删除字符串的最后一个字符

c++ - 处理字符串时出现 super 奇怪的错误

c++ - 使用指针在数组中查找值

c# - 使用 Visual Studio Code 和使用定义的符号