C style casting은 권장하지 않는 형 변환임.
#include <iostream>
using namespace std;
enum class Type {
A, B, C
};
int main() {
int i = 10;
float& f = (float&)i; // reinterpret
const int& j = i;
int& k = (int&)j; // const cast
i = (int)Type::A; // static cast
}
위 같은 형식으로 c style casting을 구현할 수 있다.\
하지만 const casting을 예시로 들었을 때int& k0 = const_cast<int&>(j);
C 스타일 보다 어떠한 캐스팅인지 식별하는데에 명확하다는 장점이 있으며 다른 캐스팅도 마찬가지다.
#include <iostream>
using namespace std;
class Parent {
public:
Parent() {
cout << "1" << endl;
}
explicit Parent(int i) { cout << "2 "; }
};
int main() {
Parent p;
p = Parent(10);
p = (Parent)10;
}
1
2 2
클래스의 형변환도 같이 할 수 있다.