मान लीजिए कि हमारे पास दो विशेषताओं वाला एक व्यक्ति वर्ग है first_name और last_name। इसमें क्रमशः प्रथम नाम और अंतिम नाम को पुनः प्राप्त करने या सेट करने के लिए get_first_name() और get_last_name() नामक दो विधियां भी हैं। हमें पहले नाम और अंतिम नाम को प्रिंट करने के लिए निष्कर्षण ऑपरेटर (<<) को ओवरलोड करना होगा ताकि उन्हें cout स्टेटमेंट का उपयोग करके प्रिंट किया जा सके।
इसलिए, यदि इनपुट पहले नाम और अंतिम नाम ("सुमित", "रे") के साथ एक व्यक्ति वस्तु की तरह है, तो आउटपुट पहला नाम - सुमित, अंतिम नाम - रे होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
निष्कर्षण ऑपरेटर को अधिभारित करने के लिए, इसे कक्षा के बाहर परिभाषित किया जाना चाहिए
-
वापसी का प्रकार एक ओस्ट्रीम संदर्भ होगा
-
इनपुट पैरामीटर एक ओस्ट्रीम संदर्भ चर ओएस, और वस्तु संदर्भ चर हैं
-
os का उपयोग करके वस्तु के सभी भागों को उचित क्रम में निकालें
-
ऑब्जेक्ट रेफरेंस लौटाएं।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <iostream> using namespace std; class Person { private: string f_name; string l_name; public: Person(string first_name, string last_name) : f_name(first_name), l_name(last_name) {} string& get_first_name() { return f_name; } string& get_last_name() { return l_name; } }; ostream& operator<<(ostream& os, Person& p) { os << "First name: " << p.get_first_name() << ", Last name: " << p.get_last_name(); return os; } int main(){ Person p("Sumit", "Ray"); cout << p << ", he is our member."; }
इनपुट
p("Sumit", "Ray")
आउटपुट
First name: Sumit, Last name: Ray, he is our member.