Java를 매우 오랫동안 사용 해왔고 C++ 프로그래밍 스타일에 익숙해 지는데 문제가 있습니다. C++에서 인스턴스 변수의 알고리즘 초기화
우리는 다음과 같은 시나리오를 관리 할 수있는 방법 :인스턴스 변수가 기본 생성자를 사용하여 생성 할 수없는 개체입니다. 자바 생성자에서 매개 변수는 상위 수준의 클래스 생성자에서 결정될 수 있습니다.
인스턴스 변수는 참조 유형이므로 생성자에서 간단한 알고리즘 (조건, 계산, ...)을 실행 한 다음 해당 참조에 객체를 만들고 할당해야합니다.
아마도 생성자 초기화 목록이 아닌 다른 위치에서 인스턴스 변수를 초기화해야하는 유사한 시나리오가있을 수 있습니다. 나는 GCC가 그렇게 할 수 있다고 생각하지만 (경고 발행), VC++는 허용하지 않는 것 같다.
나는 이들 중 대부분을 포인터를 사용하여 수행 할 수 있다고 생각하지만 가능한 한 포인터를 피하려고 노력하고있다 (런타임 크래시를 최소화하고 또한 문제를 디버깅하기가 어렵다).
나는 첫 번째 요점을 잘 모르겠다. 기본이 아닌 생성자, 즉 매개 변수가있는 생성자를 호출 할 수 없습니까? – juanchopanza
이니셜 라이저 목록에서만 할 수 있습니다. Java에서 수행되는 방식과 다릅니다. –
@juanchopanza : 예.이 경우 매개 변수는 코드를 실행 한 후에 식별됩니다. 상위 수준 클래스를 인스턴스화 할 때는 사용할 수 없습니다. – wmac