SlideShare a Scribd company logo
1 of 7
Download to read offline
C++ !
http://blog.naver.com/ruvendix
C++의 형식 선정 연산자
C++은 좀 더 안전하고 확실한 형식 선정을 위해
형식 선정 연산자를 4개나 제공하고 있음!
연산자 사용 빈도
static_cast 자주 사용함
dynamic_cast 잘 사용하지 않음
const_cast 잘 사용하지 않음
reinterpret_cast 적당히 사용함
http://blog.naver.com/ruvendix
static_cast
class CParent { };
class CChild : public CParent { };
// 상속 간의 형식 선정
CParent *pParent = static_cast<CParent *>(new CChild);
delete pParent;
CParent *pParent = static_cast<CChild *>(new CChild);
delete pParent;
// 이런 경우도 형식 선정 가능
CChild *pChild = static_cast<CChild *>(new CParent);
delete pChild;
http://blog.naver.com/ruvendix
dynamic_cast
class CParent { };
class CChild : public CParent { };
// 상속 간의 형식 선정
CParent *pParent = dynamic_cast<CParent *>(new CChild);
delete pParent;
CParent *pParent = dynamic_cast<CChild *>(new CChild);
delete pParent;
// 이런 경우는 형식 선정 불가능!
CChild *pChild = dynamic_cast<CChild *>(new CParent);
delete pChild;
http://blog.naver.com/ruvendix
const_cast
const int iNum = 100;
int *pNum = const_cast<int *>(&iNum);
iNum = 200; // 변경 불가능!
*pNum = 200; // 변경 가능!
// iNum의 값은 100
cout << iNum << endl;
// *pNum의 값은 200
cout << *pNum << endl;
http://blog.naver.com/ruvendix
reinterpret_cast
int iAddress = 0x12345678;
int *pAddress = reinterpret_cast<int *>(iAddress);
// hex는 16진수로 출력하는 것
// pAddress는 0x12345678
cout << hex << pAddress << endl;
int iNewAddress = reinterpret_cast<int>(pAddress);
// iNewAddress는 0x12345678
cout << iNewAddress << endl;
http://blog.naver.com/ruvendix

More Related Content

Viewers also liked

Hello c++ world
Hello c++ worldHello c++ world
Hello c++ world. Ruvendix
 
상속과 다형성
상속과 다형성상속과 다형성
상속과 다형성. Ruvendix
 
Google coding guide
Google coding guideGoogle coding guide
Google coding guide. Ruvendix
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩. Ruvendix
 
여러 생성자
여러 생성자여러 생성자
여러 생성자. Ruvendix
 
클래스의 기초 지식
클래스의 기초 지식클래스의 기초 지식
클래스의 기초 지식. Ruvendix
 
클래스의 추가 지식
클래스의 추가 지식클래스의 추가 지식
클래스의 추가 지식. Ruvendix
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양Jubok Kim
 
자료형과 값
자료형과 값자료형과 값
자료형과 값. Ruvendix
 
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433Padana Impianti prodotti Zanussi Professional Tel. 0523 593433
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433Padana Impianti
 
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN OFER...
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN  OFER...INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN  OFER...
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN OFER...Federación Puertorriqueña de Karate
 
GDC2012 트렌드 리뷰
GDC2012 트렌드 리뷰GDC2012 트렌드 리뷰
GDC2012 트렌드 리뷰Jubok Kim
 
표준 입출력
표준 입출력표준 입출력
표준 입출력. Ruvendix
 
Palestras Shoot The Shit
Palestras Shoot The ShitPalestras Shoot The Shit
Palestras Shoot The ShitShoot
 

Viewers also liked (20)

Hello c++ world
Hello c++ worldHello c++ world
Hello c++ world
 
상속과 다형성
상속과 다형성상속과 다형성
상속과 다형성
 
Google coding guide
Google coding guideGoogle coding guide
Google coding guide
 
배열
배열배열
배열
 
연산자 오버로딩
연산자 오버로딩연산자 오버로딩
연산자 오버로딩
 
여러 생성자
여러 생성자여러 생성자
여러 생성자
 
템플릿
템플릿템플릿
템플릿
 
클래스의 기초 지식
클래스의 기초 지식클래스의 기초 지식
클래스의 기초 지식
 
동적할당
동적할당동적할당
동적할당
 
구조체
구조체구조체
구조체
 
클래스의 추가 지식
클래스의 추가 지식클래스의 추가 지식
클래스의 추가 지식
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양
 
포인터
포인터포인터
포인터
 
자료형과 값
자료형과 값자료형과 값
자료형과 값
 
Hello world
Hello worldHello world
Hello world
 
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433Padana Impianti prodotti Zanussi Professional Tel. 0523 593433
Padana Impianti prodotti Zanussi Professional Tel. 0523 593433
 
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN OFER...
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN  OFER...INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN  OFER...
INSTITUTO PUERTORRIQUEÑO PARA EL DESARROLLO DEL DEPORTE Y LA RECREACIÓN OFER...
 
GDC2012 트렌드 리뷰
GDC2012 트렌드 리뷰GDC2012 트렌드 리뷰
GDC2012 트렌드 리뷰
 
표준 입출력
표준 입출력표준 입출력
표준 입출력
 
Palestras Shoot The Shit
Palestras Shoot The ShitPalestras Shoot The Shit
Palestras Shoot The Shit
 

Similar to 형식 선정

[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)Sang Don Kim
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27진화 손
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나Astin Choi
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부Gwangwhi Mah
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부JiHyung Lee
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄SeongHyun Ahn
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 

Similar to 형식 선정 (8)

[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
Effective c++ item27
Effective c++ item27Effective c++ item27
Effective c++ item27
 
Ai C#세미나
Ai C#세미나Ai C#세미나
Ai C#세미나
 
C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부C++ 11 에 대해서 쉽게 알아봅시다 1부
C++ 11 에 대해서 쉽게 알아봅시다 1부
 
Programming skills 1부
Programming skills 1부Programming skills 1부
Programming skills 1부
 
파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄파이썬 데이터베이스 연결 2탄
파이썬 데이터베이스 연결 2탄
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 

형식 선정

  • 2. http://blog.naver.com/ruvendix C++의 형식 선정 연산자 C++은 좀 더 안전하고 확실한 형식 선정을 위해 형식 선정 연산자를 4개나 제공하고 있음! 연산자 사용 빈도 static_cast 자주 사용함 dynamic_cast 잘 사용하지 않음 const_cast 잘 사용하지 않음 reinterpret_cast 적당히 사용함
  • 3. http://blog.naver.com/ruvendix static_cast class CParent { }; class CChild : public CParent { }; // 상속 간의 형식 선정 CParent *pParent = static_cast<CParent *>(new CChild); delete pParent; CParent *pParent = static_cast<CChild *>(new CChild); delete pParent; // 이런 경우도 형식 선정 가능 CChild *pChild = static_cast<CChild *>(new CParent); delete pChild;
  • 4. http://blog.naver.com/ruvendix dynamic_cast class CParent { }; class CChild : public CParent { }; // 상속 간의 형식 선정 CParent *pParent = dynamic_cast<CParent *>(new CChild); delete pParent; CParent *pParent = dynamic_cast<CChild *>(new CChild); delete pParent; // 이런 경우는 형식 선정 불가능! CChild *pChild = dynamic_cast<CChild *>(new CParent); delete pChild;
  • 5. http://blog.naver.com/ruvendix const_cast const int iNum = 100; int *pNum = const_cast<int *>(&iNum); iNum = 200; // 변경 불가능! *pNum = 200; // 변경 가능! // iNum의 값은 100 cout << iNum << endl; // *pNum의 값은 200 cout << *pNum << endl;
  • 6. http://blog.naver.com/ruvendix reinterpret_cast int iAddress = 0x12345678; int *pAddress = reinterpret_cast<int *>(iAddress); // hex는 16진수로 출력하는 것 // pAddress는 0x12345678 cout << hex << pAddress << endl; int iNewAddress = reinterpret_cast<int>(pAddress); // iNewAddress는 0x12345678 cout << iNewAddress << endl;