例如,假设我有一个类:
在代码的其他地方,我有类似这样的东西:
有人知道为什么编译器在这种情况下会选择非const版本吗?
这只是一个有点牵强的例子,但我们真正要解决的问题是定期自动保存一个对象,如果它发生了变化,指针必须是非const的,因为它可能在某个时刻被改变。
class Foo
{
public:
std::string& Name()
{
m_maybe_modified = true;
return m_name;
}
const std::string& Name() const
{
return m_name;
}
protected:
std::string m_name;
bool m_maybe_modified;
};
在代码的其他地方,我有类似这样的东西:
Foo *a;
// Do stuff...
std::string name = a->Name(); // <-- chooses the non-const version
有人知道为什么编译器在这种情况下会选择非const版本吗?
这只是一个有点牵强的例子,但我们真正要解决的问题是定期自动保存一个对象,如果它发生了变化,指针必须是非const的,因为它可能在某个时刻被改变。