본문 바로가기

타입변환3

포인터 타입변환 1. 포인터 생성자/소멸자2. 타입변환을 위한 클래스 생성3. 연관성이 없는 클래스 사이의 포인터 변환4. 상속관계 클래스 사이의 포인터 변환포인터 생성자/ 소멸자포인터를 이용하여 동적할당을 할 때, 생성자와 소멸자가 호출될 수 있다.단순한, 포인터 선언은 생성자와 소멸자를 호출하지 않는다. class Player{};class Knight : public Player{};int main(){ Knight* knight; // 생성자, 소멸자 호출 x Player* player; // 생성자, 소멸자 호출 x knight = new Knight(); // 생성자, 소멸자 호출 o player = new Player(); // 생성자, 소멸자 호출 o Player*.. 2024. 7. 4.
타입변환 1. 일반적인 값& 참조타입 변환2. 업캐스팅 & 다운캐스팅       3. 암시적 변환 & 명시적 변환  4. 아무 관계없는 클래스 사이의 변환5. 상속관계의 클래스 타입 변환 일반적인 값& 참조타입 변환값 타입 변환원본 객체와 다른 비트열 재구성int a = 1234567;float b = (float)a; // 비트열 재구성 -> 값의 오류가 생길 수 있음 참조 타입 변환비트열 재구성 x , 관점만 변환int a = 1234567;float b = (float&)a; // a의 주소값을 float으로 이해하겠다라는 의미 (값의 변형이 존재)// float b = *(float*)&a; // 동일한 표현 업캐스팅 & 다운캐스팅업캐스팅작은 것 -> 큰 것으로 변경더 많은 범위를 표현할 수 있는 타입으로.. 2024. 7. 4.
자동 캐스팅, 변수 유효범위, 타입 변환 자동 캐스팅(타입변환), 변수 생존 범위자동 캐스팅int 와 float/double이 계산 될 경우, 더 큰 데이터 자료형으로 자동 캐스팅 된다.하지만, 컴파일에게 자동으로 맡기는 것이아닌, 직접 추가해줄 수 있는 방법이 있다.int main(void){ int a = 1; float b = 2.2f; int result; result = a + b; // a가 1.0 으로 자동 캐스팅됨 result = (float)a + b; // 직접 (float)을 통해 캐스팅해줄 수 있다 }자동 캐스팅의 경우 의도치 않은 결과값이 나올 수 있기에, 캐스팅 해주는 것이 바람직하다 (* 의도치 않은 코드는 버그를 일으킴) 변수 생존 범위중괄호 (for문, 함수(main.. 2024. 6. 21.