때로는 실패 할 수있는 생성자를 작성해야합니다. 예를 들어 파일 경로를 사용하여 객체를 인스턴스화하고 싶다고 가정 해보십시오.
obj = new Object("/home/user/foo_file")
경로가 적절한 파일을 가리키는 한 모든 것이 좋습니다. 그러나 문자열이 유효한 경로가 아닌 경우 문제가 발생합니다. 그러나 어떻게?
당신은 할 수 있습니다 :
- 예외를 던지다
- null 객체 반환 (프로그래밍 언어에서 생성자가 값을 반환 할 수있는 경우)
- 경로가 올바르게 설정되지 않았 음을 나타내는 플래그와 함께 유효한 객체를 반환합니다 (ugh).
- 다른 사람?
다양한 프로그래밍 언어의 "모범 사례"가이를 다르게 구현한다고 가정합니다. 예를 들어 ObjC는 (2)를 선호한다고 생각합니다. 그러나 (2) 생성자가 반환 유형으로 void를 가져야하는 C ++에서는 구현할 수 없습니다. 이 경우 (1)이 사용됩니다.
선택한 프로그래밍 언어로이 문제를 어떻게 처리하고 그 이유를 설명 할 수 있습니까?
void
개체를 반환합니다.
new
호출 operator new
하여 메모리를 할당 한 다음 생성자를 채우십시오. 생성자는 아무것도 반환하지 않으며 new
에서 얻은 포인터를 반환합니다 operator new
. "아무것도 돌려주지 않는다"는 것이 "반품"을 의미하는지 void
는 이해하기 쉽다.