C ++ 클래스 명시 적 및 암시 적 변환 변환

다음 생성자 유형 이중 Stonewt 유형의 값을 변환하는 데 사용됩니다 :

Stonewt(double lbs);

즉,이 같은 코드를 작성할 수 있습니다 :

Stonewt myCat;
myCat = 19.6;

생성자는 초기 값 19.6로 임시 객체를 생성하는 Stonewt (두 번)를 사용한다. 그런 다음에 myCat에 임시 객체의 내용을 복사 할 수있는 멤버 별 방법을 지정합니다. 그것은 명시 적 캐스트가 필요없이, 자동으로하기 때문에이 과정은 암시 적 변환이라고합니다.
전용 변환 함수 생성자에 매개 변수를 수용한다. 다음 함수는 두 개의 매개 변수를 가지고, 따라서 변환 유형에 사용할 수 없습니다 :

Stonewt(int stn, double lbs);

그러나 디폴트 값이 변환 INT에 사용할 수있는 두 번째 매개 변수로 제공되는 경우 :

Stonewt(int stn, double lbs = 0);

이 때문에 자동 기능은 항상 바람직하지 않다의, C ++의 새로운이 자동 기능을 폐쇄, 명시 적 키워드. 예를 들어, 다음 문 생성자 :

explicit Stonewt(double lbs);

이것은 암시 적 변환이 꺼집니다, 그러나 명시 적 변환, 즉, 명시 적 캐스트를 할 수 있습니다 :

Stonewt myCat;
myCat = 19.6;   //not valid
mycat = Stone(19.6);  //OK, an explicit conversion

참고 : 생성자 하나 개의 매개 변수를 형식 유형의 매개 변수 유형 변환을 정의합니다. 키워드를 명시 적 기능이 구성을 정의하는 경우에만 표시 변환 할 수 있습니다, 또는 암시 적 변환에 사용될 수있다.

추천

출처www.cnblogs.com/ticonci/p/12455661.html