freeseaboy 님의 멋있어 지려 노력하는 블로그
(베이직 코스)C++ 형변환 알아보자 본문
이번에는 C++ 씨쁠쁠 혹은 씨플러스플러스
에서 사용할수있는 형변환에 대해 리뷰 해보겠다.
먼저 C++에는 형변환이 4개나 된다
반면 C언어는 1개다
물론!!!!
방식에 따라 컴파일러에 미리 알려줘서 변환하는 방식과 (명시적)
무시하고 내멋대로 변환하는 권위적인 변환이 있지만 말이다 (묵시적)
그럼 먼저 C에서 형변환 방법을 이해해 보겠다.
자 생각을 해보자
[?][?][?][?] 란 4바이트 메모리 공간이 있다고 하자
32비트 혹은 64비트 환경에서 공통적으로 Integer형은 4바이트를 쳐먹는다.
냠냠...
이럴경우 형변환을 하게되면 두가지로 나뉜다
1.업 캐스팅
2.다운 캐스팅
업캐스팅의 경우 기존 변환이전에 갖고있는 자료형을 더큰 자료형에 대입하는 방법이다
장점(데이터 손실이 없다.)
단점(없다.)
반대로
다운캐스팅의 경우 기존 변환 어쩌구 에서 더 작은 자료형에 억지로 대입 하는 방법이다.
(장점)......
(단점)데이터 소실이 있을수 있다.
캐스팅 방법-
#include <stdio.h>
int main(void){
short myShort = 2;
int myInt = 38128382;
printf("%d %d %d %d",myShort,(int)myShort,myInt,(short)myInt);
return -999;
}
자 보이는가 결과를 잘보면 맨 왼쪽 값이 엉뚱한 값이 나옴을 알수 있다.
이건 아까 말했다 싶이 다운캐스팅의 단점이 바로 적용된 사례라 보면된다.
그러니 다운캐스팅은 안하는게 아니 안하면 된다.
자 그럼 C++에서 형변환 방법을 알아보자.
C++ 경우는 명시적 묵시적인 방법 외에 타입을 지정해야 한다.
심지어 우리가 모르는 템플릿을 이용해 변환을 한다..(졸라 어렵게 느껴진다 ㅠ)
스태틱 = type -> type 변환에 유리
다이나믹 = 이부분은 나중에 리뷰할 상속에 관련된 부분인데 어찌됫든
상속받은 클래스의 어쩌구 무튼 다형성과 관련 된 메소드에 대한 형변환 정도라
보면 된다.
부모 A가 상속해 줘서 받은 B 자식의
상속한 내용물에 접근할때 사용하는 기술이다 정도로 알면된다.
콘스트 , 리인터프리터 등은 알필요가 거의없다.
자주 사용되지도 않고 저런걸 쓴다는건 코드가 클린하지 못한 소리니
바로 코드 때려보자
#include <stdio.h>
int main(void){
char cValue = 'P';
short sValue = static_cast<int>(cValue);
double const cdValue = 44;
double* dValue = const_cast<double*>(&cdValue);
*dValue = 1.0;
int* iValue = reinterpret_cast<int*>(&cValue);
*iValue = 'G';
printf("%d %c %f",sValue,cValue,cdValue);
}
'컴퓨터 & 서버 > C++' 카테고리의 다른 글
(베이직 코스)C++ 상속 에 대해 알아보자 (2) | 2024.10.28 |
---|---|
(베이직 코스)C++ 추상 및 가상 에 대해 알아보자 (6) | 2024.10.27 |
(베이직 코스)C++ 소멸자 에 대해 알아보자 (2) | 2024.10.26 |
(베이직 코스)C++ 이름 공간에 대해 알아보자 (0) | 2024.10.25 |
(베이직 코스)C++ 클래스 찍어 보기 (0) | 2024.10.24 |