myclass
मेरे द्वारा लिखा गया C ++ वर्ग है और जब मैं लिखता हूं:
myclass x;
cout << x;
मैं कैसे या एक मूल्य की तरह उत्पादन 10
या ?20.2
integer
float
जवाबों:
आमतौर पर operator<<
अपनी कक्षा के लिए ओवरलोडिंग द्वारा :
struct myclass {
int i;
};
std::ostream &operator<<(std::ostream &os, myclass const &m) {
return os << m.i;
}
int main() {
myclass x(10);
std::cout << x;
return 0;
}
const myclass &m
इसके बजाय यह नहीं होना चाहिए myclass const &m
?
const
टाइप करने के बाद अपने तरीके से काम करते हैं m is a reference to a const myclass
। इसके साथ प्रकार से पहले, यह कहता है "एम एक मायक्लास कॉन्स्टेंस का संदर्भ है, जो कि व्यर्थ और सही मायने में अनियंत्रित के बीच दांतेदार किनारे पर है।
आपको <<
ऑपरेटर को अधिभारित करने की आवश्यकता है ,
std::ostream& operator<<(std::ostream& os, const myclass& obj)
{
os << obj.somevalue;
return os;
}
फिर जब आप करते हैं cout << x
( आपके मामले में x
प्रकार myclass
का है), तो आपने इसे विधि में जो कुछ भी बताया है, उसे आउटपुट करेगा। ऊपर के उदाहरण के मामले में यह x.somevalue
सदस्य होगा।
यदि सदस्य के प्रकार को सीधे एक में नहीं जोड़ा जा सकता है ostream
, तो आपको <<
उस प्रकार के लिए ऑपरेटर को ओवरलोड करने की आवश्यकता होगी , ऊपर उसी विधि का उपयोग करके।
यह बहुत आसान है, बस लागू करें:
std::ostream & operator<<(std::ostream & os, const myclass & foo)
{
os << foo.var;
return os;
}
आउटऑउट को चेन करने के लिए आपको os के संदर्भ में वापस लौटने की आवश्यकता है (cout << foo << 42 << endl)
myclass
कोईprivate
फ़ील्ड है, और आपoperator<<()
उन्हें आउटपुट करना चाहते हैं, तो एक मित्र के रूप मेंmyclass
घोषित करना चाहिएstd::ostream& operator<<(std::ostream&, myclass const&)
।