हाँ और नहीं।
यह निर्भर करता है जो सी ++ के संस्करण के, आप उपयोग कर रहे।
- सी ++ 98 और सी ++ 03
explicit
जैसे रूपांतरण ऑपरेटरों
- लेकिन सी ++ 11 करता है समर्थन नहीं करते।
उदाहरण के लिए,
struct A
{
//implicit conversion to int
operator int() { return 100; }
//explicit conversion to std::string
explicit operator std::string() { return "explicit"; }
};
int main()
{
A a;
int i = a; //ok - implicit conversion
std::string s = a; //error - requires explicit conversion
}
g++ -std=c++0x
के साथ संकलित करें, तो आप इस त्रुटि प्राप्त होगी:
prog.cpp:13:20: error: conversion from 'A' to non-scalar type 'std::string' requested
ऑनलाइन डेमो: http://ideone.com/DJut1
लेकिन जैसे ही आप लिखते हैं:
std::string s = static_cast<std::string>(a); //ok - explicit conversion
त्रुटि दूर चला जाता है: Btw http://ideone.com/LhuFd
, सी ++ 11 में, स्पष्ट रूपांतरण ऑपरेटर के रूप में "प्रासंगिक रूपांतरण ऑपरेटर" अगर यह बूलियन में धर्मान्तरित करने के लिए जाना जाता है।
आशा है कि मदद करता है: इसके अलावा, अगर आप अंतर्निहित और स्पष्ट रूपांतरण के बारे में अधिक जानना चाहते हैं, इस विषय में पढ़ा।
+1। कृपया सी ++ 11 कोड का उदाहरण पोस्ट कर सकते हैं? – FailedDev
@ फ़ेलडेव: हो गया। :-) – Nawaz
बहुत अच्छा धन्यवाद! – FailedDev