본문 바로가기

Study/C C++

[두들낙서] 묵시적 형변환

묵시적(암시적) 형변환 (implicit conversion)

 - 객체에 변환 생성자가 있다면, 형변환을 별도로 하지 않아도 입력이 된다

 주의 어떠한 형태로 변환될지 애매한 상태일때는 명시적 형변환을 이용해준다  문법상 int, double 둘 다 가능할 때

 ex) class Item { Item(int num) : num(num) { } }  형변환을 시켜줄 수 있는 생성자면 모두 변환 생성자다

      Item i3 = 3;  3이 int값이지만, 형변환을 명시하지 않아도 상단의 생성자를 바탕으로 형변환을 시켜준다

 

명시적 형변환 (explicit conversion)

 - 객체에 변환 생성자가 있어도, 형변환을 별도로 할 수 있다

 ex) class Item { Item(int num) : num(num) { } }

      Item i1 = Item(1);  원래 class에서 요구하는 형태의 객체 생성이다

      Item i4 = (Item)4;  변환 생성자와 명시한 자료형을 바탕으로 형변환을 시켜줄 수 있다

 

형변환 오버로딩

 - C언어에서는 형변환도 연산자다

 - 형변환을 오버로딩하면 객체를 다른 자료형으로 변환이 가능하다

 ex) operator int() const {

           return num;

      }

      explicit operator double() const {  explicit이 붙으면 명시적 형변환을 하지 않으면 형변환이 불가능하다

           return num;

      }

'Study > C C++' 카테고리의 다른 글

[두들낙서] 상속에서의 형변환  (0) 2021.03.06
[두들낙서] 상속  (0) 2021.03.04
[두들낙서] 객체 복사  (0) 2021.03.04
[두들낙서] 동적 할당  (0) 2021.03.04
[두들낙서] 클래스와 객체  (0) 2021.03.04