scriptplay330 C 스타일함수 스타일 변환 #include using std::cout;using std::endl; class Parent{public: Parent() {} explicit Parent(int i) {}}; enum class Type{ A, B, C}; void constCastFunc(int i){ const int& j = i; int& k0 = (int&)j; // const_cast // C스타일 캐스트보다 의도가 명확하다 int& k1 = const_cast(i);} int main(){ // C 스타일 캐스팅 int num0 = (int)Type::A; // 함수형 스타일 캐스팅 int num1 = int(Type::A); // C, 함수형 스타틸 캐스팅은 아래 세 개의 캐스팅을 시행한다 int i = 10; fl.. 2020. 12. 14. reinterpreter_cast 타입에 상관없이 변환. #include #include using std::cout;using std::endl; union ID{ char chars[10]; int integer;}; int main(){ ID id; id.integer = 10; // 해당 비트 배열을 int로 인식하겠다는 의미 // 사용에 주의 int* p = reinterpret_cast(&id); cout 2020. 12. 11. dynamic_cast 런타임 시점에 캐스팅을 진행, 성공할 경우 주소값을 반환. 캐스팅에 실패할 경우 nullptr을 반환. #include using std::cout;using std::endl; class Parent{public: virtual ~Parent() {}}; class Child : public Parent{public: void func() { cout 2020. 12. 11. const_cast const의 성향을 제거해 주는 캐스팅. 원본의 const는 제거할 수 없음. #include #include "String.h" using std::cout; using std::endl; int volotileFunc() { // volatile 컴파일 타임 최적화를 하지 않겠다. // 매번 메모리에서 읽어서 사용하겠다. volatile int i = 0; i++; i++; i++; return i; } void func(const int& i) { int& j = const_cast(i); // 상수성을 제거해준다. j = 10; } int main() { int i = 0; func(i); cout 2020. 12. 11. static_cast 형 변환 시점이 컴파일 시점. c스타일의 캐스팅과 비슷한 역할. 상속 관계만 따질 뿐 부모와 자식의 관계는 따지지 않음. #include using namespace std; class ClassA {}; class ClassB {}; enum class TypeA { A, B, C }; enum class TypeB { A, B, C }; class Test { public: Test(int num) {} explicit Test(int num0, int num1) {} operator bool() const { return true; } explicit operator double() const { return 1.2; } }; class Parent {}; class Child : public Pa.. 2020. 12. 11. 형 변환 규칙 #include using namespace std; void func(float f){} int main(){ // double이 float으로 형 변환 float f = 1; // double이 float으로 형 변환 func(1); char ch0 = 'a'; int num0 = ch0; // promotion, widening conversion, 확대 변환, 손실이 일어나지 않음 int num1 = 1000; char ch1 = num1; // demotion, narrowing conversion, 축소 변환, 손실이 일어남 // Uniform initailization // { } 를 이용하여 초기화를 하면 축소 변환의 경우 컴파일 타임 에러가 발생한다 //char ch = { num1 };.. 2020. 12. 11. 이전 1 ··· 19 20 21 22 23 24 25 ··· 55 다음