लोकल और ग्लोबल दोनों वेरिएबल्स के लिए निम्नलिखित समान है। मूल रूप से, जब भी आप कोई वेरिएबल घोषित करते हैं, कंपाइलर इसके डिफ़ॉल्ट कंस्ट्रक्टर को कॉल करेगा जब तक कि आप अन्यथा निर्दिष्ट न करें।
भाषा-स्तर के प्रकार (जैसे पॉइंटर्स, 'int', 'float', 'bool', आदि) "डिफ़ॉल्ट कंस्ट्रक्टर" कुछ भी नहीं करता, यह केवल मेमोरी को वैसा ही छोड़ देता है जैसा यह घोषित होने पर होती है। इसका मतलब है कि वे बहुत कुछ भी हो सकते हैं क्योंकि आप आमतौर पर सुनिश्चित नहीं हो सकते कि उस मेमोरी में पहले क्या था या यहां तक कि मेमोरी कहां से आई।
यदि आप एक क्लास बनाते हैं जिसमें कंस्ट्रक्टर नहीं है, तो कंपाइलर आपके लिए एक बनाएगा जो केवल इसके प्रत्येक मेंबर/वेरिएबल के कंस्ट्रक्टर को कॉल करता है। यदि आपके पास आर्गुमेंट्स वाला एक कंस्ट्रक्टर है, और बिना आर्गुमेंट्स वाला कोई कंस्ट्रक्टर नहीं है, तो कंपाइलर एक त्रुटि फेंकेगा कि कोई मिलान करने वाला कंस्ट्रक्टर नहीं मिला।