Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- 멀티쓰레드
- 반복문
- 스택영역
- 차이점
- thread
- c#
- static_cast
- 배열
- 프래그멘테이션
- 기술면접
- list
- 자료구조
- 리스트
- std::map
- MonoBehaviour
- map
- 트리
- 해쉬맵
- std::unordered_map
- 객체지향
- vector
- 공부
- 스택
- Queue
- 힙영역
- 알고리즘
- 큐
- 인프런
- 벡터
- rookiss
Archives
- Today
- Total
호빵의 IT 개발소
[C/C#] 업캐스팅, 다운캐스팅 본문
업캐스팅
- 인스턴스 타입을 파생 클래스 타입에서 기본 클래스 타입으로 변환
- 기본 클래스의 포인터로 파생 클래스의 객체를 부름
- 기본 클래스의 public 멤버들만 접근 가능
- 파생 클래스의 객체를 기본 클래스의 객체처럼 다룰 수 있음
- 업 캐스팅은 암시적임

Animal animal = new Pig(); // Pig 클래스의 인스턴스 생성, 인스턴스를 부모 타입 변수에 할당
animal.Move(); // animal은 Pig 클래스의 인스턴스, 타입은 Animal, Animal 클래스의 Move 메서드 호출 가능
다운캐스팅
- 인스턴스의 타입을 기본 클래스 타입에서 파생 클래스 타입으로 변환
- 파생 클래스의 포인터로 기본 클래스의 포인터가 가리키는 객체를 부름
- 다운캐스팅은 명시적임

Animal animal = new Pig(); //업캐스팅
Pig pig = (Pig)animal; // 다운캐스팅 - Pig변수에 인스턴스 할당
Pig.Move(); // 부모 클래스의 MOVE 메서드 호출 가능
주의
- 부모 타입의 인스턴스를 생성 후 자식 타입으로 다운캐스팅 금지
is 연산자
- 식의 런타임 형식이 지정된 형식과 호환되지는 확인
Animal animal = new Animal();
bool canDownCast = animal is Pig;
Console.WriteLine(canDownCast); // false
as 연산자
- 런타임 형식이 지정된 형식과 호환되는 경우 식을 해당 형식으로 명시적으로 변환
- 변환할 수 없는 경우 as 연산자는 null을 반환
Animal animal = new Pig();
Pig pig = animal as Pig;
참고 및 출처 :
https://www.youtube.com/watch?v=yVDljROH1Jg
'CS(전공지식) > 프로그래밍언어' 카테고리의 다른 글
| [C] C프로그램(소스 파일, 목적 파일, 실행 파일) (0) | 2022.06.26 |
|---|---|
| [C] 포인터 (0) | 2022.06.24 |
| [C#] 디자인 패턴 (0) | 2022.06.22 |
| [C#] 가비지 컬렉션(GC, Garbage Collection) (0) | 2022.06.22 |
| [C#] 박싱과 언박싱 (0) | 2022.06.21 |
Comments