Özellikle varsayılan kurucu hakkında soru sorma
Yapıcı bir nesnenin tüm verilerini başlatırsa, düzgün başlatma olmadan kullanılamayan bir sınıf oluşturursam, varsayılan kurucunun işe yaramaz olması gerekmez mi? Düşünmek:
// 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
}
Bu değişken current_entry
aslında işe yaramaz değil mi? Birisi daha sonra işlemeye çalışırsa, muhtemelen hata alırlar; o zaman bu hataları işlemek için kod oluştururlar ...
Bu tür ek, gereksiz kodları azaltmak için: neden varsayılan kurucuyu kullanılamaz hale getirmiyorsunuz? Bunun gibi,
...etc
CSV_Entry() {
throw Verbose_Exception( "CSV_Entry: do not use the default constructor" );
}
...etc
Not: bir yan notta, varsayılan kurucuyu kullanılamaz hale getirmenin iyi olması durumunda, başka bir uygulama ayrıntısı yine de açıklanmadığından, başlığı atmak iyi olur mu?