正如預訂說我讀:爲什麼在此函數定義的末尾添加了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