2012-06-28 29 views
12

निम्न कोड में:सी ++ में, केवल डिफॉल्ट कन्स्ट्रक्टर के साथ एक डिफॉल्ट कन्स्ट्रक्टर वाला कन्स्ट्रक्टर है?

struct Foo 
{ 
    Foo(int x=0); 
}; 

निर्माता एक डिफ़ॉल्ट निर्माता के रूप में गिनती करता है?

+1

डिफ़ॉल्ट कन्स्ट्रक्टर स्वचालित रूप से संकलक द्वारा उत्पन्न होता है जब आप एक को परिभाषित नहीं करते हैं। तो मैं नहीं कहूंगा, ऐसा इसलिए नहीं है क्योंकि आपने इसे – peacemaker

+3

@peacemaker को परिभाषित किया है, वास्तव में एक डिफॉल्ट कन्स्ट्रक्टर कोई कन्स्ट्रक्टर नहीं है जिसमें कोई तर्क नहीं है – Matt

+2

@peacemaker: आप डिफ़ॉल्ट रूप से "डिफ़ॉल्ट रूप से प्रदान किए गए" में डिफ़ॉल्ट रूप से भ्रमित कर रहे हैं जैसे " डिफ़ॉल्ट रूप से बुलाया जाता है "। मानक बाद के संदर्भ में शब्द का उपयोग करता है। –

उत्तर

18

सी ++ 98 §12.1/5 (जोर मेरा):

एक वर्ग एक्स के लिए एक डिफ़ॉल्ट निर्माता एक्स के एक निर्माता है कि एक तर्क के बिना कहा जा सकता है। यदि कक्षा X के लिए कोई उपयोगकर्ता द्वारा घोषित कन्स्ट्रक्टर नहीं है, तो एक डिफ़ॉल्ट कन्स्ट्रक्टर को निश्चित रूप से घोषित किया जाता है।

तो हाँ, यह एक डिफ़ॉल्ट कन्स्ट्रक्टर के रूप में गिना जाता है। See also

+0

मैंने सोचा कि मैंने इसे कहीं और पढ़ा है। स्पष्टीकरण के लिए धन्यवाद। – chris

+0

धन्यवाद! नहीं पता था कि एक अंतर है। – panickal

+2

@panickal उदाहरण को ध्यान में रखकर लायक हो सकता है उदाहरण भी एक रूपांतरण कन्स्ट्रक्टर है और अभी भी इसके साथ अंतर्निहित रूपांतरण करता है। –

संबंधित मुद्दे

 संबंधित मुद्दे