डिफ़ॉल्ट कंस्ट्रक्टर

कंप्यूटर प्रोग्रामिंग भाषाओं में, डिफॉल्ट कंस्ट्रक्टर शब्द एक कंस्ट्रक्टर (कंप्यूटर विज्ञान) को संदर्भित कर सकता है जो किसी भी प्रोग्रामर-परिभाषित कंस्ट्रक्टर (जैसे जावा में) की अनुपस्थिति में कंपाइलर द्वारा स्वचालित रूप से उत्पन्न होता है, और सामान्यतः एक नल्लरी कंस्ट्रक्टर होता है। अन्य भाषाओं में (उदाहरण के लिए C++ में) यह एक कंस्ट्रक्टर है जिसे बिना कोई आर्ग्युमेंट दिए कॉल किया जा सकता है, भले ही कंस्ट्रक्टर ऑटो-जेनरेट किया गया हो या यूजर-डिफाइंड हो। ध्यान दें कि औपचारिक पैरामीटर (कंप्यूटर विज्ञान) वाले एक कंस्ट्रक्टर को अभी भी बिना आर्ग्युमेंट के कॉल किया जा सकता है यदि कंस्ट्रक्टर की परिभाषा में डिफ़ॉल्ट आर्ग्युमेंट प्रदान किए गए थे।

सी++
सी++ में, मानक एक वर्ग के लिए डिफ़ॉल्ट कंस्ट्रक्टर को एक कंस्ट्रक्टर (कंप्यूटर विज्ञान) के रूप में वर्णित करता है जिसे बिना किसी आर्ग्युमेंट के कहा जा सकता है (इसमें एक कंस्ट्रक्टर सम्मिलित है जिसके सभी मापदंडों में डिफ़ॉल्ट आर्ग्युमेंट हैं)। उदाहरण के लिए: मेमोरी को डायनामिकलि अलोकेटेड करते समय, क्लास नाम के बाद कोष्ठक जोड़कर कंस्ट्रक्टर को कॉल किया जा सकता है। एक तरह से, यह कंस्ट्रक्टर के लिए एक एक्सप्लिसिट कॉल है: यदि कंस्ट्रक्टर के पास एक या अधिक पैरामीटर हैं, लेकिन उन सभी में डिफ़ॉल्ट मान हैं, तो यह अभी भी एक डिफ़ॉल्ट कंस्ट्रक्टर है। याद रखें कि प्रत्येक वर्ग में अधिकतम एक डिफ़ॉल्ट कंस्ट्रक्टर हो सकता है, या तो बिना पैरामीटर वाला, या वह जिसके सभी पैरामीटर में डिफ़ॉल्ट मान हों, जैसे कि इस स्तिथि में: सी++ में, डिफ़ॉल्ट कंस्ट्रक्टर महत्वपूर्ण होते हैं क्योंकि वे कुछ परिस्थितियों में स्वचालित रूप से लागू हो जाते हैं; और इसलिए, इन परिस्थितियों में, किसी क्लास के लिए डिफ़ॉल्ट कंस्ट्रक्टर न होना एक त्रुटि है:
 * जब किसी ऑब्जेक्ट का मान बिना किसी आर्ग्युमेंट सूची के घोषित किया जाता है (उदाहरण: ) या बिना किसी आर्ग्युमेंट सूची के डायनामिकलि अलोकेटेड (उदाहरण:   या  ), का डिफ़ॉल्ट कंस्ट्रक्टर   ऑब्जेक्ट को प्रारंभ करने के लिए उपयोग किया जाता है।
 * जब वस्तुओं की एक सरणी घोषित की जाती है, उदा. ; या डायनामिकलि अलोकेटेड, उदा.   का डिफ़ॉल्ट कंस्ट्रक्टर   सभी तत्वों को आरंभ करने के लिए उपयोग किया जाता है।
 * जब एक व्युत्पन्न क्लास कंस्ट्रक्टर अपनी इनिशियलाइज़र सूची में बेस क्लास कंस्ट्रक्टर को स्पष्ट रूप से कॉल नहीं करता है, तो बेस क्लास के लिए डिफ़ॉल्ट कंस्ट्रक्टर को कॉल किया जाता है।
 * जब कोई क्लास कंस्ट्रक्टर अपनी इनिशियलाइज़र सूची में किसी ऑब्जेक्ट-वैल्यू फ़ील्ड के कंस्ट्रक्टर को स्पष्ट रूप से कॉल नहीं करता है, तो फ़ील्ड के क्लास के लिए डिफ़ॉल्ट कंस्ट्रक्टर को कॉल किया जाता है।
 * मानक लाइब्रेरी में, कुछ कंटेनर डिफ़ॉल्ट कंस्ट्रक्टर का उपयोग करके मान भरते हैं जब मान स्पष्ट रूप से नहीं दिया जाता है। जैसे वेक्टर को दस तत्वों के साथ प्रारंभ करें, जो एक डिफ़ॉल्ट-कंस्ट्रक्टर   से भरे हुए हैं ।

यदि किसी वर्ग में कोई स्पष्ट रूप से परिभाषित कंस्ट्रक्टर नहीं है, तो कंपाइलर इसके लिए एक डिफ़ॉल्ट कंस्ट्रक्टर को स्पष्ट रूप से घोषित और परिभाषित करेगा। यह अंतर्निहित रूप से परिभाषित डिफ़ॉल्ट कंस्ट्रक्टर एक खाली बॉडी वाले स्पष्ट रूप से परिभाषित कंस्ट्रक्टर के बराबर है। उदाहरण के लिए: यदि किसी क्लास के लिए कंस्ट्रक्टर्स को स्पष्ट रूप से परिभाषित किया गया है, लेकिन वे सभी गैर-डिफ़ॉल्ट हैं, तो कंपाइलर किसी डिफॉल्ट कंस्ट्रक्टर को अंतर्निहित रूप से परिभाषित नहीं करेगा, जिससे ऐसी स्थिति उत्पन्न होगी जहां क्लास में डिफॉल्ट कंस्ट्रक्टर नहीं होगा। यह एक विशिष्ट त्रुटि का कारण है, जिसे निम्नलिखित उदाहरण द्वारा प्रदर्शित किया गया है। चूंकि न तो प्रोग्रामर और न ही कंपाइलर ने डिफॉल्ट कंस्ट्रक्टर को परिभाषित किया है, द्वारा इंगित ओब्जेक्टेड पॉइंटेड से एरर उत्पन्न होता है।

दूसरी ओर C++11 में एक डिफ़ॉल्ट कंस्ट्रक्टर स्पष्ट रूप से बनाया जा सकता है: या स्पष्ट रूप से बाधित:

जावा और सी#
जावा (प्रोग्रामिंग भाषा) और सी शार्प (प्रोग्रामिंग भाषा) दोनों में, एक डिफ़ॉल्ट कंस्ट्रक्टर एक नल्लरी कंस्ट्रक्टर को संदर्भित करता है जो कंपाइलर द्वारा स्वचालित रूप से उत्पन्न होता है यदि क्लास के लिए कोई कंस्ट्रक्टर परिभाषित नहीं किया गया है। डिफ़ॉल्ट कंस्ट्रक्टर स्पष्ट रूप से सुपरक्लास के नलरी कंस्ट्रक्टर को कॉल करता है, फिर एक खाली बॉडी निष्पादित करता है। सभी फ़ील्ड को उनके प्रारंभिक मान 0 (पूर्णांक प्रकार), 0.0 (फ़्लोटिंग-पॉइंट प्रकार) पर छोड़ दिया गया है।  (  प्रकार), या   (संदर्भ प्रकार), एक प्रोग्रामर-परिभाषित कंस्ट्रक्टर जो कोई पैरामीटर नहीं लेता है उसे सी शार्प (प्रोग्रामिंग भाषा) में डिफॉल्ट कंस्ट्रक्टर भी कहा जाता है, लेकिन जावा (प्रोग्रामिंग भाषा) में नहीं कहा जाता है।