विशेष रूप से डिफ़ॉल्ट कंस्ट्रक्टर के बारे में पूछ रहा है
यह देखते हुए कि कंस्ट्रक्टर किसी ऑब्जेक्ट के लिए सभी डेटा को इनिशियलाइज़ करता है, अगर मैं एक ऐसी क्लास बनाऊं जिसे बिना उचित इनिशियलाइज़ेशन के इस्तेमाल नहीं किया जा सके, तो क्या यह ऐसा नहीं है कि डिफॉल्ट कंस्ट्रक्टर बेकार है? विचार करें:
// A class for handling lines in a CSV file
class CSV_Entry {
private:
unsigned num_entries;
std::string string_version;
std::vector<std::string> vector_version;
...etc
public:
CSV_Entry();
CSV_Entry(const std::string& src_line);
// returns a vector copy of the original entry
std::vector<std::string> get_vector_snapshot();
}
int main( void ) {
...etc
CSV_Entry example = CSV_Entry();
std::vector<std::string> current_entry = example.get_vector_snapshot();
...etc
}
वह चर current_entry
अनिवार्य रूप से बेकार नहीं है? यदि कोई बाद में इसे संसाधित करने की कोशिश करता है, तो उन्हें संभवतः त्रुटियां मिलेंगी; फिर वे ऐसी त्रुटियों को संभालने के लिए कोड बनाएंगे ...
इस तरह के अतिरिक्त, अनावश्यक कोड को कम करने के लिए: डिफ़ॉल्ट निर्माता को अनुपयोगी क्यों न बनाया जाए? इस तरह,
...etc
CSV_Entry() {
throw Verbose_Exception( "CSV_Entry: do not use the default constructor" );
}
...etc
पुनश्च: एक साइड नोट पर, यदि यह केवल डिफ़ॉल्ट कंस्ट्रक्टर को अनुपयोगी बनाने के लिए ठीक है, तो क्या उस फेंक को हेडर में रखना ठीक है, क्योंकि किसी भी अन्य कार्यान्वयन विवरण का कोई भी खुलासा नहीं होता है?