जब एक सार्वजनिक एपीआई डिजाइनिंग, यह निर्माता के रूप में स्पष्ट करने के लिए एक अच्छा अभ्यास है एक अच्छा अभ्यास है?इसे बनाने के लिए निर्माता स्पष्ट
class A {
public:
//explicit A(int i){}
A(int i){}
};
void fun(const A& a) {}
int main() {
// If I use explicit for A constructor, I can prevent this mistake.
// (Or shall I call it as feature?)
fun(10);
}
या क्या मैं निहित रूपांतरण की अनुमति दूंगा, जिससे उपयोगकर्ता कम एपीआई को कम टाइपिंग के साथ कॉल कर सके?
निहित रूपांतरण के लिए उदाहरण: कुछ भी संख्या (उदा।एक बिग्नम लाइब्रेरी, या दिनांक/समय लाइब्रेरी) - निहित रूपांतरण के विरुद्ध: केवल 'std :: vector' वर्ग पर विचार करें जिसे प्रारंभिक आकार के साथ प्रारंभ किया जा सकता है। –
मैं इसके साथ सहमत हूं। आईएमई शायद ही कभी ऐसा मामला है जहां आप निहित कास्टिंग चाहते हैं और यदि आप स्पष्ट पक्ष पर गलती करते हैं, तो उपयोगकर्ताओं को कुछ और कीस्ट्रोक को मजबूर कर कोई नुकसान नहीं होता है। – sbi
उदाहरण के रूप में: 'जटिल (डबल रे, डबल आईएम = 0) के माध्यम से डबल से जटिल तक अंतर्निहित रूपांतरण' समझ में आता है, लेकिन 'वेक्टर (int आकार) के माध्यम से int से वेक्टर में रूपांतरण नहीं करता है। –