उदाहरण के लिए, मैं एक वर्ग है लगता है:सी ++ में, कंपाइलर गैर-कॉन्स्ट फ़ंक्शन का चयन क्यों करता है जब कॉन्स्ट भी काम करेगा?
Foo *a;
// Do stuff...
std::string name = a->Name(); // <-- chooses the non-const version
क्या किसी को पता है कि क्यों संकलक गैर स्थिरांक का चयन करेंगे:
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;
};
और कहीं और कोड में, मैं इस तरह कुछ है इस मामले में संस्करण?
यह कुछ हद तक प्रत्याशित उदाहरण है, लेकिन वास्तविक समस्या जिसे हम हल करने की कोशिश कर रहे हैं वह समय-समय पर ऑब्जेक्ट को ऑटो-सेव कर रहा है यदि यह बदल गया है, और पॉइंटर गैर-कॉन्स होना चाहिए क्योंकि इसे किसी बिंदु पर बदला जा सकता है।
यदि आप किसी कॉन्स्ट फ़ंक्शन में कुछ चर बदलना चाहते हैं, तो आपसी विशेषता का उपयोग करें। – ypnos
आपका मतलब है "mutable" – Lev
... और "सदस्य चर", मुझे लगता है। – Niklas