본문 바로가기

형 변환2

[ C++ ] C++ 형 변환 연산자 총 정리( static_cast, const_cast, dynamic_cast, reinterpret_cast ) C 스타일의 형 변환 연산자는 무적의 형 변환 연산자(Old C-style cast operator)이기에.. C 언어와의 호환성을 위해서 존재하지만, C++에서의 새로운 형 변환 연산자를 사용하는 것이 안전하다. C++에서 발생할 수 있는 C의 형 변환의 문제점은 기초 클래스의 포인터 형을 유도 클래스의 포인터 형으로 변환하는 것이 있기에, 일반적인 연산이 아니다. 그래서 C++은 다음과 같이 총 4개의 연산자를 추가로 제공하면서 용도에 맞는 형 변환 연산자의 사용을 권하고 있다. dynamic_cast dynamic_cast(expr) 사이에 변환하고자 하는 자료형의 이름을 둔다. 하지만 객체의 포인터 또는 참조형이 와야 한다. ( ) 사이에는 변환의 대상이 와야 한다. dynamic_cast는 다음.. 2019. 12. 7.
[ C++ ] 임시객체로의 자동 형 변환과 형 변환 연산자(Conversion Operator) C++에서는 객체 간의 대입 연산을 허용한다. ( 객체의 자료형이 일치할 때만 대입 연산이 가능하다. ) 그럼, 객체와 정수간의 대입 연산도 가능할까? 가능하다. 그럼, 어떤 과정을 통해서 위의 결과가 나오는지 자세히 살펴보겠다. 자세히 보면 Num 생성자가 두번 일어난 것을 확인할 수 있다. 먼저 객체 n이 생성할 때 한번, Num n; 그리고 n = 20을 연산할 때 한번 일어난다. n = 20; 즉, 연산을 위해서 임시 객체가 생성된 것을 확인할 수 있는데, 좀 더 풀어보면 n = 20; n = Num(20); // 임시객체 생성 n.operator=(Num(20)); // 임시객체를 대상으로 하는 대입 연산자 호출 이런 과정을 가진 것을 확인할 수 있다. 그리고 이러한 임시 객체의 생성을 통해서 .. 2019. 11. 28.