正如预订说我读:为什么在此函数定义的末尾添加了const?
“为了能够调用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你是我的英雄。 – WhozCraig
它强制'const'正确。你不能在一个'const'实例上(或者通过一个'const'引用或者一个指向'const'的指针)调用一个非const超载。 – juanchopanza