ถามเฉพาะเกี่ยวกับตัวสร้างเริ่มต้น
ระบุว่าตัวสร้างเริ่มต้นข้อมูลทั้งหมดสำหรับวัตถุถ้าฉันสร้างคลาสที่ไม่สามารถใช้โดยไม่ต้องเริ่มต้นที่เหมาะสมมันไม่ใช่กรณีที่นวกรรมิกเริ่มต้นไม่มีประโยชน์หรือไม่ พิจารณา:
// 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
นั้นไม่มีประโยชน์เลยใช่ไหม? หากมีคนพยายามประมวลผลในภายหลังพวกเขาอาจจะได้รับข้อผิดพลาด จากนั้นพวกเขาจะสร้างรหัสเพื่อจัดการข้อผิดพลาดดังกล่าว ...
เพื่อลดรหัสเพิ่มเติมที่ไม่จำเป็นดังกล่าว: ทำไมไม่ทำให้ Constructor เริ่มต้นใช้งานไม่ได้ เช่นนั้น
...etc
CSV_Entry() {
throw Verbose_Exception( "CSV_Entry: do not use the default constructor" );
}
...etc
PS: ในหมายเหตุข้างถ้ามันเป็นเพียงการสร้างคอนสตรัคค่าเริ่มต้นใช้งานไม่ได้มันเป็นเรื่องดีที่จะโยนมันลงในส่วนหัว