假设我有一个类
class K
{
public:
int k = 0;
void Change()
{
k++;
}
void None() const
{
std::cout << "None \n";
}
};
像这样为什么在const引用上使用non const方法完全可以呢?
void FN(const std::shared_ptr<K>& k)
{
k->Change();
}
最佳答案
指针是常量而不是对象。您不能更改指针指向的对象,但是可以更改对象。
如果您想要一个常量对象,则需要:
void FN(const std::shared_ptr<const K>& k)
{
k->Change();
}
另请参阅:https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/,以了解为什么您根本不想使用
const shared_ptr
参数。
关于c++ - const std::shared_ptr&const正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60680311/