기본 생성자에 대해 구체적으로 묻습니다.
생성자가 객체의 모든 데이터를 초기화한다고 가정하면, 적절한 초기화없이 사용할 수없는 클래스를 만들면 기본 생성자가 쓸모없는 경우가 아닌가? 치다:
// 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
추신 : 기본 생성자를 사용할 수 없게 만드는 것이 좋으면 다른 구현 세부 정보가 공개되지 않기 때문에 헤더에 던져 넣는 것이 좋습니까?