2012-01-13 2 views
4

C++의 생성자와 Eiffels create procedure 선언의 차이점은 무엇입니까?Eiffel이 C++ 생성자보다 "생성"됩니까?

클래스에 대해 여러 생성자 함수를 가질 수 있다는 데는 어떤 가치가 있습니까? 아니면 Eiffels에 ​​"이점"이 있습니까? 당신은뿐만 아니라 여러 생성자를 정의 할 수 있도록, 생성자를 오버로드 할 수 있습니다 ++ C에서

감사합니다

+1

"여러 생성자 [s]를 가질 수있는 데는 어떤 가치가 있습니까?"Eiffels에 ​​"_"생성 된 모든 혜택이 있습니까? "에펠이 클래스에 대해 여러 생성자를 가질 수 있다고 말하는 것처럼 보입니다 하지만 C++은 잘못되었습니다. 나는 잘못 읽었을지도 모른다. –

+0

맞아! 나는 당신이 생성자에 과부하를 줄 수 있다는 것을 결코 알지 못했다. –

답변

3

.

EIFFEL에서와 같은 생성자 프로 시저를 사용하면 동일한 서명 (즉, 동일한 수와 인수 유형)을 갖는 여러 생성자를 정의 할 수 있다는 이점이 있습니다.

Triangle 클래스를 상상해보십시오. 삼각형의 길이 (3 개의 부동 값)를 제공하거나 삼각형을 구성하거나 두면과 둘러싸는 각도 (세 개의 부동 소수점 값)를 지정하고자 할 수 있습니다.

C++에서는 추가 매개 변수 (예 : '건설 모드'의 경우 enum 값)를 정의해야하며 EIFFEL에서는 다른 이름으로 두 개의 작성 절차를 간단히 정의 할 수 있습니다.

+2

실제로'Effel의'create'와 같은 방법으로 객체를 생성 할 다른 이름을 가진'static' 함수를 만들 수 있습니다 –

+0

예, 그렇지만 완전히 다른 것입니다! 예를 들어 상속에 대해 생각해보십시오. 이러한 정적 함수는 하위 클래스의 생성자에서 사용할 수 없습니다. – MartinStettner

+0

사실입니다. 실제로 당신은 할 수 있었지만, 나는 여분의 노력을할만한 가치가 없었을 것입니다. 그래서 "적어도 하나의 차이점"이라고 말했습니다. –

관련 문제