일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- NarwalFreo
- 파이썬
- 삼성전자 소프트웨어멤버십 SSM
- SSM
- Friendship
- 삼성
- 패턴 인식
- hopfield network
- 빅데이터
- 가상화
- 증강현실
- BAM
- 나르왈프레오
- 신경망
- 인공지능
- 삼성소프트웨어멤버십
- Python
- 하이퍼바이저
- Neural Network
- 갤럭시탭S8울트라
- Bidirectional Associative Memory
- Google App Engine
- 신경회로망
- 패턴인식
- 구글 앱 엔진
- 멤버십
- 물걸레자동세척로봇청소기
- 동아리
- 고려대학교
- 물걸레로봇청소기추천
Archives
- Today
- Total
정보공간_1
[bada 모바일플랫폼] basics of bada Programming 2 본문
안녕하세요 ^^ 붉은 고래 입니다. 오랜만의 글을 올리게 되었습니다.
너무 글을 연재 하지 않아, 성실하게 블로그에 바다 글을 연재 해 볼까 합니다.
긴 휴식 시간을 가진 만큼 더욱더 알찬 내용을 가지고 오겠습니다.
오늘은 basics of bada Programming 2 시간에는 C++의 casting에 대해서 알아보고,
현재 bada에서 Casting하고 있는 부분을 설명하고, 간단한 기능을 구현해 보도록 하겠습니다.^^
안전한 프로그램을 구현 하기 위해서는 casting에 대한 정확한 이해가 필수 겠죠?
그럼 지금 부터 차근차근 Casting에 대해서 알아 보도록 하겠습니다.
[재미있는 Casting 이야기.]
C언어에서도 C++(bada)와 마찬가지로, 캐스팅 연산자가 존재 합니다. 하지만 C언어세는 강제적인 형변환
으로 인해, 100프로 형변환이 일어 나서 무척 위험한 경우가 많으며, 종종 위험한 버그를
만들어 내는 경우도 있습니다.
그래서 C++에서는 static_cast, const_cast, reinterpret_cast, dynamic_cast 4개의
명시적 캐스팅 연산자를 만들었습니다.
가장 이상적으로, 바다에서 사용 되어 지고 있는 static_cast 연산자 부터 예제 소스 코드
를 통해서, 자세히 알아 보도록 하겠습니다.
[C++ 예제 코드]
static_cast 는 논리적으로 변환이 가능한 경우에만 허용 되며, 포인터 타입의 캐스팅을
했을 경우, 컴파일러 타임 때 에라가 나타 납니다. 따라서 개발자에게 위험을 알려 주므
로써, 프로그램의 안전성을 보장 해 줄수 있습니다.
그럼 바다에서 캐스팅 하고 있는 부분을 한번 살펴 볼까요?
그래서 안전한 캐스팅을 하기 위해서, static_cast 캐스트 연산자를 사용하여, Button을 다운
캐스팅을 하고 있습니다. 이렇게 캐스팅을 사용 했을 경우, 코드의 가독성의 증가와, 컴파일 타입에서 캐스팅의
안전성을 확인 해 주기 때문에 개발자에게 유익합니다.
그럼 여러분도 앞으로 캐스팅은 무조건 C++에서 제공 해주는 연산자를 사용 해야겠죠?
이번 장에서는 static 캐스팅 연산자에 대해서 알아 보았고, 다음시간에는 남은 연산자에 대해서
설명 하는 시간을 가지도록 하겠습니다.
이상 붉은 고래 였습니다.
lscpjyoon@gmail.com
너무 글을 연재 하지 않아, 성실하게 블로그에 바다 글을 연재 해 볼까 합니다.
긴 휴식 시간을 가진 만큼 더욱더 알찬 내용을 가지고 오겠습니다.
오늘은 basics of bada Programming 2 시간에는 C++의 casting에 대해서 알아보고,
현재 bada에서 Casting하고 있는 부분을 설명하고, 간단한 기능을 구현해 보도록 하겠습니다.^^
안전한 프로그램을 구현 하기 위해서는 casting에 대한 정확한 이해가 필수 겠죠?
그럼 지금 부터 차근차근 Casting에 대해서 알아 보도록 하겠습니다.
[재미있는 Casting 이야기.]
C언어에서도 C++(bada)와 마찬가지로, 캐스팅 연산자가 존재 합니다. 하지만 C언어세는 강제적인 형변환
으로 인해, 100프로 형변환이 일어 나서 무척 위험한 경우가 많으며, 종종 위험한 버그를
만들어 내는 경우도 있습니다.
그래서 C++에서는 static_cast, const_cast, reinterpret_cast, dynamic_cast 4개의
명시적 캐스팅 연산자를 만들었습니다.
가장 이상적으로, 바다에서 사용 되어 지고 있는 static_cast 연산자 부터 예제 소스 코드
를 통해서, 자세히 알아 보도록 하겠습니다.
[C++ 예제 코드]
double d=098.765; int i;
i= static_cast<int>(d); pi= (int *)str; // 강제적인 형 변환 가능 하지만 위험함.pi= static_cast<int *>(str); // 컴파일 타입 에러.
#include <iostream> using namespace std; class bada { }; class wave : public bada { }; int main() { bada P,*pP; wave C,*pC; pP=static_cast<bada *>(&C); // 업캐스팅 가능. pC=static_cast<wave *>(&P); // 다운 캐스팅 가능하지만 위험함
return 0; }
static_cast 는 논리적으로 변환이 가능한 경우에만 허용 되며, 포인터 타입의 캐스팅을
했을 경우, 컴파일러 타임 때 에라가 나타 납니다. 따라서 개발자에게 위험을 알려 주므
로써, 프로그램의 안전성을 보장 해 줄수 있습니다.
그럼 바다에서 캐스팅 하고 있는 부분을 한번 살펴 볼까요?
[bada 예제 코드]
__pLabelButton =
static_cast<Label *>(GetControl(L"IDF_LABEL_BUTTON"));
Button *pButtonOn =
static_cast<Button *>(GetControl(L"IDF_BUTTON_ON"));
Button *pButtonOff =
static_cast<Button *>(GetControl(L"IDF_BUTTON_OFF"));
위의 예제 코드와 그림에 살펴 보면, Button은 Control라는 부모로 부터 상속을 받습니다.
[그림1] Inheritance diagram for Button
그래서 안전한 캐스팅을 하기 위해서, static_cast 캐스트 연산자를 사용하여, Button을 다운
캐스팅을 하고 있습니다. 이렇게 캐스팅을 사용 했을 경우, 코드의 가독성의 증가와, 컴파일 타입에서 캐스팅의
안전성을 확인 해 주기 때문에 개발자에게 유익합니다.
그럼 여러분도 앞으로 캐스팅은 무조건 C++에서 제공 해주는 연산자를 사용 해야겠죠?
이번 장에서는 static 캐스팅 연산자에 대해서 알아 보았고, 다음시간에는 남은 연산자에 대해서
설명 하는 시간을 가지도록 하겠습니다.
이상 붉은 고래 였습니다.
lscpjyoon@gmail.com
'IT 놀이터 > IT Storehouse' 카테고리의 다른 글
[linux kernel] power management 와 hibernation 이란 (1) | 2011.08.19 |
---|---|
[영상처리] OpenCV 2.2를 MacOS에 설치하기 (1) | 2011.08.09 |
[linux] 프로세스 공간 관리 (0) | 2011.06.29 |
[Linux] <Session 2> 물리 메모리 관리 (0) | 2011.06.13 |
[bada 모바일플랫폼] basics of bada Programming 1 (3) | 2011.06.06 |