【发布时间】:2014-02-20 06:32:50
【问题描述】:
正如我正在阅读的预订中所述:
"为了也能调用get(),如果我们手头只有一个指向const TextureHolder的指针或引用,我们需要提供一个const限定的重载。这个新的成员函数返回对const sf::Texture 的引用,因此调用者无法更改纹理。..."
然后作者继续提供这个重载函数定义的例子:
const sf::Texture& TextureHolder::get(...) const;
我了解,如果您有指向 const TextureHolder 的引用或指针,则无法对其进行修改。因此返回类型为const sf::Texture&。
但是为什么在函数定义的末尾附加了const?那不是只有一个指向常量this的指针,所以你不能修改类成员变量吗?那么,如果我们的函数不尝试修改任何成员/对象变量,那么这样做的目的是什么?
对于好奇的,这里是完整的功能:
sf::Texture& TextureHolder::get(Textures::ID id){
auto found = mTextureMap.find(id);
return *found->second;
}
~~~~~~~~~~~~~
作为语言的新手,我仍然在 C++ 语言中对 const 的上百万种不同用法(我知道,有点夸张)。
【问题讨论】:
-
@juanchopanza 你是我的英雄。
-
它强制执行
const正确性。您不能在const实例上调用非常量重载(或通过const引用或指向const的指针。)