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)

  • 삼항 연산자는 조건부 평가를 하므로 부수 효과가 있는 표현식도 안전해요.
  • 콤마 연산자는 우선순위가 가장 낮아 괄호가 필요할 수 있어요.

더 알아보기 (Learn more)

cppreference