형변환 C에서 부터 캐스트 연산자는 변수 타입을 바꾸는 방면에서 편리하고 유연한 코드 작성을 하도록 도와준다. 하지만 그 결과 실제 데이터의 크기가 변환되는 과정에서 데이터가 손상되거나 메모리 공간이 부족할 경우 할당할 수 없게 될 수 있다. 또한 클래스 간 형변환에서 가장 중요한 사실은 "컴파일러는 다운캐스팅이 올바르게 일어났는지 모른다."는 것이다. 하여 개발자는 형변환이 가능한지 항상 먼저 확인해야하고 정말 확인을 못하는 경우 C++에서 지원하는 형변환 연산자들을 통해 변환이 가능한 상황을 확인하고 진행해야한다. C++는 형변환을 좀 더 안전한 변환을 위해 4개의 형변환 연산자를 제공한다. 형변환에 대한 글은 이전 글에도 있으니 잠시 살펴보자. 형변환 연산자의 필요성 타입 안전성 및 명확성 C의 형..

업캐스팅 (Upcasting) 업캐스팅은 자식 클래스 타입에 대한 참조(포인터 혹은 레퍼런스)를 부모 타입으로 형변환하는 것이다. 부모클래스 *b = new 자식클래스; 위 코드는 분명 다른 자료형임에도 어떠한 오류가 발생하지 않는다. 이는 자식 클래스에서 부모 클래스 객체에 할당될때 묵시적 형변환이 일어나기 때문이다. (실제로 모든 업캐스팅은 묵시적으로 일어날 수 있다.) 이는 포인터뿐만 아니라 좌변이 부모 클래스 레퍼런스 변수일 때도 일어난다. 이는 Call-By-Reference에도 발생한다. 자식클래스 d; 부모클래스 &p = d; void f(부모클래스 &b) { // ... } int main() { 자식클래스 d; f(d); ) 하지만 포인터나 레퍼런스를 사용하지 않고 객체 자체끼리 대입하려..
- Total
- Today
- Yesterday
- thread
- 게임수학
- dynamic_cast
- static_cast
- CPU
- 할당
- New
- 클래스
- 레지스터
- 수학
- 컴파일
- 인터럽트
- 멀티스레드
- 상속
- 메모리
- 초기화
- const
- 명령어
- c++
- 백준
- 크기
- malloc
- 알고리즘
- 구조
- 입출력
- 운영체제
- 프로세스
- 스레드
- 포인터
- 함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |