operator_other— 기타 연산자들
operator_other— 기타 연산자들
C++에는 산술·논리·멤버 접근 외에도 여러 기타 연산자가 있어요. 그 중 대표적인 것이 삼항(조건) 연산자, 콤마 연산자, 함수 호출 연산자예요.
조건에 따라 두 값 중 하나를 고르거나, 여러 표현식을 순서대로 평가할 때 사용해요.
출처: cppreference
본문
기타 연산자에는 조건 연산자, 콤마 연산자, 함수 호출 등이 있어요.
삼항(조건) 연산자
cond ? expr_true : expr_false
조건이 참이면 expr_true, 거짓이면 expr_false를 평가해요. 둘 중 하나만 평가돼요.
int max = a > b ? a : b; // a 가 크면 a, 아니면 b
삼항 연산자의 결과 타입은 두 분기의 공통 타입이에요. 조건부로 초기화할 때 if-else보다 간결해요.
콤마 연산자
expr1 , expr2
왼쪽 표현식을 먼저 평가(부수 효과)하고 버린 뒤, 오른쪽 표현식을 평가해 그 값을 결과로 내요.
int x = (f(), g()); // f() 먼저, 그 후 g() 의 값
for 루프의 반복 갱신부에서 여러 표현식을 쓰는 데 자주 사용돼요.
for (int i = 0, j = 10; i < j; ++i, --j) { }
함수 호출 연산자
postfix-expression ( argument-list )
함수·함수 객체 나 호출 연산자 operator()를 가진 객체를 호출해요.
struct Adder {
int operator()(int a, int b) const { return a + b; }
};
Adder add;
int s = add(3, 4); // operator() 호출
함수 객체(functor)는 상태를 가질 수 있어 알고리즘 등에 유용해요.
변환 연산자
클래스에서 operator Type()으로 사용자 정의 변환을 정의할 수 있어요.
struct Fraction {
double value;
operator double() const { return value; } // double 로 암시 변환
};
기타
- 배열 첨자 변환 —
a[x] new/delete표현식 — 동적 할당- 캐스트 연산자 —
static_cast,const_cast,reinterpret_cast,dynamic_cast
노트 (Notes)
- 삼항 연산자는 조건부 평가를 하므로 부수 효과가 있는 표현식도 안전해요.
- 콤마 연산자는 우선순위가 가장 낮아 괄호가 필요할 수 있어요.