इंटरनेट पर स्पष्टीकरण के लिए बहुत सारे कोड हैं (विशेष रूप से यहां, स्टैक ओवरफ्लो पर) जो *this
लौटाते हैं।कुछ वर्ग विधियां क्यों "* यह" (स्वयं का ऑब्जेक्ट संदर्भ) लौटती हैं?
उदाहरण के लिए पोस्ट Copy constructor and = operator overload in C++: is a common function possible? से:
MyClass& MyClass::operator=(const MyClass& other)
{
MyClass tmp(other);
swap(tmp);
return *this;
}
जब मैं लिखने के रूप में स्वैप:
void MyClass::swap(MyClass &tmp)
{
// some code modifying *this i.e. copying some array of tmp into array of *this
}
void
करने के लिए operator =
के लिए पर्याप्त सेटिंग वापसी मान नहीं है और *this
लौटने से बचने के?
आपको कैसे लगता है कि 'a = b = c' जैसे अक्षरों को चालू करना? –
'ऑपरेटर =' का "सामान्य" व्यवहार ऑपरेशन के परिणाम के संदर्भ को वापस करना है। आप इसे शून्य के रूप में परिभाषित कर सकते हैं लेकिन यह सभी उपयोगकर्ताओं की अपेक्षाओं के लिए अलग व्यवहार करता है। आप सरल ('x = y) ++' या किसी अन्य मूल्यांकन जैसे कुछ नहीं लिख सकते हैं जो परिणाम मान का उपयोग करता है। यह महत्वपूर्ण है कि आप ऑब्जेक्ट के संदर्भ को केवल मान न दें। यदि आप केवल मूल्य वापस करते हैं, तो उपरोक्त शब्द संकलित होगा लेकिन परिणाम गलत है! – Klaus
इसे [विधि चेनिंग] कहा जाता है (https://en.wikipedia.org/wiki/Method_chaining#C.2B.2B)। संबंधित: [सी ++ में 'वापसी * इस' का क्या मतलब है?] (Http://stackoverflow.com/q/18162522/514235)। – iammilind