2015년 9월 17일 목요일

[C++11] User define literal

User define literal
: 사용자 정의 literal operator 를 추가할 수 있다.

예제를 통해서 살펴보자.

premitive type 인 float의 값을 표현할 때 접미사로 f 를 사용할 수 있다.
이와 같이 사용자 정의 class 인 Meter 에도 단위를 직관적으로 표현하도록 literal operator 를 정의할 수 있을까?


Meter classd에서 m operator 를 정의하여 user define literal operator 를 사용할 수 있다.
한 가지 주의할 점은 operator 를 정의할 때 전달 받는 인자의 타입이 정해져 있다는 것이다.

정수 literal 은 unsigned long long, const char* 로 받을 수 있으며,
부동소수점 literal 은 long double, const char* 로,
무자열 literal 은 (const char*, size_t) 로,
문자 literal 은 char 로 받을 수 있다.

하지만 사용상의 문제점은 다른 개발자가 3m 를 3 미터가 아니라 3분으로 인식할 수도 있다는 것이다.
그래서 C++ 표준 위원회에서는 왠만하면 사용자 정의 상수를 정의하지 말것을 recommend 하고 있다.

C++ 표준에서 제공하는 literal operator 의 예를 살펴보자.

s를 붙여줌으로 써 const char* 와 string 을 구분하여 전달할 수 있다.








댓글 없음:

댓글 쓰기

[C++] meta programing

재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...