उत्तर
यह एक कास्ट ऑपरेटर है। इस प्रकार को परिभाषित करने वाली कोई भी कक्षा कहीं भी std::string
की आवश्यकता हो सकती है। उदाहरण के लिए,
class Foo {
public:
operator std::string() const { return "I am a foo!"; }
};
...
Foo foo;
std::cout << foo; // Will print "I am a foo!".
कास्ट ऑपरेटरों, एक बुरा विचार लगभग हमेशा से रहे हैं के बाद से वहाँ हमेशा एक ही परिणाम प्राप्त करने के लिए एक बेहतर तरीका है। उपर्युक्त मामले में, आप operator<<(std::ostream&, const Foo&)
को परिभाषित करने से बेहतर हैं।
यह conversion operator है जो वस्तु को स्पष्ट रूप से या स्पष्ट रूप से std :: string पर डालने की अनुमति देता है। जब ऐसी कास्ट होती है, ऑपरेटर को बुलाया जाता है और कलाकार का नतीजा आमंत्रण का परिणाम होता है।
एक निहित कलाकार के उदाहरण के रूप में, मान लीजिए कि आपके पास एक ऐसा कार्य था जिसने std::string
या const std::string&
स्वीकार किया, लेकिन दिए गए ऑब्जेक्ट प्रकार को स्वीकार नहीं किया। उस फ़ंक्शन पर अपनी ऑब्जेक्ट को पास करने के परिणामस्वरूप रूपांतरण ऑपरेटर को बुलाया जाएगा, जिसके परिणामस्वरूप आपके प्रकार के बजाय फ़ंक्शन को पास किया जाएगा।
- 1. const std :: map <boost :: tuples :: tuple, std :: string>?
- 2. std :: string
- 3. std :: string को const char * में कैसे परिवर्तित करें?
- 4. std :: string में एक const char * को कैसे स्टोर करें?
- 5. std :: string को पूर्णांक
- 6. std :: string <std::string>
- 7. std :: string :: असाइन() segfault
- 8. std :: string
- 9. मुझे std :: string
- 10. std :: वेक्टर <std::string> क्रैश
- 11. सीधे एक std :: istream से std :: string
- 12. एक शून्य :: वेक्टर <std :: string>
- 13. std :: string :: ऑपरेटर +() के साथ स्पष्ट रूप से Myclass :: ऑपरेटर स्ट्रिंग() को कॉल करना क्यों आवश्यक है?
- 14. std :: string को std :: vector <char>
- 15. मैं std :: string को एक const में परिवर्तित करना चाहता हूं wchar_t *
- 16. इटरेटर पैटर्न - त्रुटि C2679: बाइनरी '<<': कोई ऑपरेटर नहीं मिला जो 'std :: string'
- 17. अमान्य ऑपरेटर <std :: सूची
- 18. आरसीपीपी :: CharacterVector को std :: string
- 19. बूस्ट पायथन कोई to_python कनवर्टर std :: string
- 20. अलग ऑपरेटर <string>
- 21. हेडर फ़ाइल में const std :: स्ट्रिंग करने का सही तरीका?
- 22. बजना, std :: shared_ptr और std :: कम/ऑपरेटर <
- 23. std :: string :: c_str और std :: string :: डेटा के बीच क्या अंतर है?
- 24. const int = int const?
- 25. `स्थिर const`` बनाम const`
- 26. std :: fstream कक्षाएं std :: string क्यों नहीं लेती हैं?
- 27. std :: size_t बनाम size_t बनाम std :: string :: size_type
- 28. std :: array <char, N> std :: string
- 29. सी ++ std :: सेट फ़ंक्शन ओवरलोडिंग == ऑपरेटर
- 30. फ्लाईवेट <string>
मैं "हमेशा" शब्द पर ऑब्जेक्ट करता हूं, यह बहुत पूर्ण है। मुझे लगता है कि "आमतौर पर" एक बेहतर शब्द होगा। –
मार्टिन, मैंने "हमेशा" नहीं कहा। मैंने कहा "लगभग हमेशा" जो पूर्ण नहीं है, और आईएमओ है, "आमतौर पर" की तुलना में सत्य के करीब। –
लोकी, आपकी अपनी टिप्पणी बहुत पूर्ण है। क्या हमेशा * हमेशा "शब्द" से बचें, या एक * आमतौर पर * हमेशा "शब्द" से बचें? – Alyoshak