मैं सी ++ के बारे में एक पुस्तक पढ़ रहा हूं और ऑपरेटर अधिभार के बारे में अधिक सटीक रूप से पढ़ रहा हूं।सी ++ क्यों असाइनमेंट ऑपरेटर को टालने के लिए एक कॉन्स रेफ वापस करना चाहिए (ए = बी) = सी
const Array &Array::operator=(const Array &right)
{
// check self-assignment
// if not self- assignment do the copying
return *this; //enables x=y=z
}
रेफरी के बजाय स्थिरांक रेफरी लौटने के बारे में पुस्तक द्वारा प्रदान की व्याख्या इस तरह के रूप (x = y) = z कार्य से बचना है:
उदाहरण का पालन करना है। मुझे समझ में नहीं आता कि हमें इससे क्यों बचना चाहिए। मैं समझता हूं कि x = y का मूल्यांकन इस उदाहरण में पहले किया गया है और चूंकि यह एक कॉन्स्ट संदर्भ देता है = z भाग निष्पादित नहीं किया जा सकता है। पर क्यों?
कौन सी किताब? यह मेरे लिए एक अनावश्यक सावधानी की तरह दिखता है। मैं किसी को लिखने की कल्पना नहीं कर सकता '(x = y) = z' - वे क्यों होंगे? और माता-पिता के बिना, 'x = y = z' को' x = (y = z) 'के रूप में पार्स किया गया है, जो सही समझ में आता है, इसलिए वहां कोई जोखिम नहीं है। –
लेकिन क्यों? यह एक कॉन्स रेफरी क्यों है? इस आदेश में इसे क्यों निष्पादित किया जाता है? 'X' को असाइन क्यों नहीं किया जा सकता है (x = y)? – Lazarus
@antronis: बेहतर सी ++ पुस्तक प्राप्त करें। – ybungalobill