C++ 스타일의 캐스팅 (static_cast 등등)
디폴트 인자 (default argument)
N 차원 배열의 제작
반복자(iterator)
기존C언어 에선 ,캐스팅은 크게 2가지 방법으로 발생.
1번의(암시적) 경우 int 와 double 변수와의 덧셈을 수행할때,
int 형 변수가 자동으로 double변수로 캐스팅 되는 것과 같은 것을 말하고
2번의(명시적) void * 타입의 주소를 특정 구조체 포인터 타입의 주소로 바꾼다던지 등의 캐스팅이 있습니다.
이때 명시적 캐스팅은 다음과 같이 수행 된다.
ptr = (Something *)other_ptr;
int_variable = (int)float_variable;
괄호 안에 원하는 타입을 넣고 변환 수행한것,
But 문제점 발생
C++에선 다음과 같은 4가지 캐스팅을 제공한다.
static_cast :
우리가 흔히 생각하는, 언어적 차원에서 지원하는 일반적인 타입변환
const_cast:
객체의 상수성(const) 를 없애는 타입변환, 쉽게 말해 const int
가 int
로 바뀐다
dynamic_cast:
파생 클래스 사이에서의 다운캐스팅(->정확한 의미는 나중에~)
reinterpret_cast:
위험을 감수하고 하는 캐스팅으로 서로 관련이 없는 포인터들 사이의 캐스팅 등.
이러한 캐스팅 사용방법
(원하는 캐스팅 종류)<바꾸려는 타입>(무엇을 바꿀 것인가?)
static_cast<int>(float_variable);
== in C
(int)(float_variable)
static_cast로 float 타입의 float_variable이라는 변수를 int타입의 변수로 타입 변환.
동적으로 2차원 배열을 구현, arr[x1][x2]
int **arr;
arr = new int*[x1];
for (int i=0; i<x1; i++)
{
arr[i] = new int[x2];
}
일단 Pass~ 상속 먼저