형 변환
한 자료형에서 다른 자료형으로 값을 변환하는 것
- 암시적 형 변환(implict type conversion): 즉 컴파일러가 자동으로 하나의 기본 자료형을 다른 자료형으로 변환한다. 자동 형 변환(automatic type conversion)이라고 불린다.
- 명시적 형 변환(explict type conversion): 형 변환을 하기 위해 형 변환 연산자(type casting operator)를 사용한다.
의도치 않은 형 변환은 오류를 원인중 하나이기 때문에 되도록 피해야 하고 될 수 있으면 명시적 형변환을 사용해야한다.
explicit
암시적 타입 변환을 수행하는데 쓰이지 않게 하는 키워드
class A {
public:
explicit A(int x = 0, bool b = true);
};
C-style cast를 지양하고 static_cast를 사용해야하는 이유
C-style cast는 컴파일 시간에 검사되지 않으므로 오용될 수 있다. (const를 제거하는 등)
static_cast의 주요 장점은 컴파일 타임에 타입 검사를 제공하여 부주의한 오류를 만들기가 더 어렵다는 것이다. s
int i = 48;
char ch = i; // implicit conversion
int(4-byte)를 char(1-byte)로 변환하면 잠재적으로 안전하지 않으므로 컴파일러는 불평한다. 이 형 변환을 사용자가 인지하고 사용한다는 것을 알리기 위해 다음과 같이 형 변환 연산자를 사용하면 된다.
int i = 48;
char ch = static_cast<char>(i);
Reference
https://www.learncpp.com/cpp-tutorial/explicit-type-conversion-casting-and-static-cast/
https://boycoding.tistory.com/177
'C,C++' 카테고리의 다른 글
[C++] class의 메모리 할당방법 (virtual 멤버함수, 일반멤버함수, 상속) (0) | 2019.11.05 |
---|---|
[C, C++] #include <헤더파일>과 #include "헤더파일"의 차이 (0) | 2019.10.23 |
[C++] 공백이 포함된 문자열 입력받기(char array, string : getline) (0) | 2019.10.23 |
[C++] 문법 char to string , string to char 변환 (0) | 2019.10.16 |
[C++, STL] <algorithm> std::fill 함수 사용하기 (feat. std::vector, 1차원 배열, 2차원 배열 초기화) (0) | 2019.09.25 |
댓글