वर्ग दो कंस्ट्रक्टर्स साथ foo
इस तरह परिभाषित किया गया पर विचार करें:सी ++ में पॉइंटर्स से बूल तक एक अंतर्निहित प्रकार रूपांतरण क्यों है?
class foo
{
public:
foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};
एक स्ट्रिंग शाब्दिक साथ वर्ग इन्स्तांत, और लगता है कि जो निर्माता कहा जाता है?
foo a ("/path/to/file");
आउटपुट:
ctor 2
मैं तुम्हारे बारे में पता नहीं है, लेकिन मुझे लगता है कि प्रोग्रामिंग के इतिहास में सबसे सहज व्यवहार नहीं पाते हैं। मुझे यकीन है कि इसके लिए कुछ चालाक कारण है, हालांकि, और मैं जानना चाहता हूं कि यह क्या हो सकता है?
संभावित डुप्लिकेट [क्यों संकलक एल "" के अंतर्निहित टाइपकास्ट के लिए स्ट्रिंग पर बूल का चयन करता है?] (Http://stackoverflow.com/questions/316181/why-does-the-compiler-choose-bool-over -स्ट्रिंग-फॉर-इम्प्लीसिट-टाइपकास्ट-ऑफ-एल) – Hasturkun
फिर भी एक और समान प्रश्न: [फ़ंक्शन/विधि ओवरलोडिंग सी ++: डेटा प्रकार भ्रम?] (http://stackoverflow.com/questions/1636181/function-method-overloading- सी-डेटा-प्रकार-भ्रम) – Athari
क्षमा करें। मैंने खोज की (जैसा कि मैंने पाया कि यह एक एफएक्यू होगा), लेकिन मुझे एक शीर्षक के साथ कोई प्रश्न नहीं मिला जो इस बात से जुड़ा हुआ था कि सवाल इस बारे में था। – Oystein