overriding 가능 연산자
정리
산술 연산자
operator+
: 덧셈 연산자operator-
: 뺄셈 연산자operator*
: 곱셈 연산자operator/
: 나눗셈 연산자operator%
: 나머지 연산자
비교 연산자
operator==
: 동등 연산자operator!=
: 비동등 연산자operator<
: 작음 연산자operator<=
: 작거나 같음 연산자operator>
: 큼 연산자operator>=
: 크거나 같음 연산자
할당 연산자
operator=
: 대입 연산자operator+=
: 더하기 대입 연산자operator-=
: 빼기 대입 연산자operator*=
: 곱하기 대입 연산자operator/=
: 나누기 대입 연산자
증감 연산자
operator++
: 전위 증가 연산자, 후위 증가 연산자operator--
: 전위 감소 연산자, 후위 감소 연산자
논리 연산자
operator&&
: 논리 AND 연산자operator||
: 논리 OR 연산자operator!
: 논리 NOT 연산자
비트 연산자
operator&
: 비트 AND 연산자operator|
: 비트 OR 연산자operator^
: 비트 XOR 연산자operator~
: 비트 NOT 연산자operator<<
: 비트 왼쪽 시프트 연산자operator>>
: 비트 오른쪽 시프트 연산자
기타 연산자
operator[]
: 배열 접근 연산자operator()
: 함수 호출 연산자operator->
: 멤버 접근 연산자operator*
: 포인터 역참조 연산자operator&
: 주소 연산자
접근 관련 연산자 구분
::
(Scope Resolution Operator) : 범위 해제 연산자로, 네임스페이스의 특정 멤버, 클래스의 정적 변수, 함수 지정에 사용.
(Member Access Operator) : 객체의 멤버(변수나 함수)에 접근할 때 사용돼. 주로 객체가 인스턴스일 때 사용 (직접 접근)->
(Member Access Operator through Pointer) : 포인터를 통해 객체의 멤버에 접근할 때 사용 (간접 접근)
Operator 오버라이딩 예시
- 참고 :씹어먹는 C++ - <5 - 3. 연산자 오버로딩 프로젝트 - N 차원 배열>
[]
나*
연산자의 경우, 별도의 하위 구조체, 클래스에서void *
와cast
를 사용해서[][]
형태의 구현이 가능후위 증감연산
은전위 증감연산
을 호출하기 전 객체를 반환하고 호출하는 식으로 구현
Operator 사용해서 출력 용이 예시
씹어먹는 C++ - <10 - 2. C++ STL - 셋(set), 맵(map), unordered_set, unordered_map>
#include <iostream> #include <set> #include <string> template <typename T> void print_set(std::set<T>& s) { // 셋의 모든 원소들을 출력하기 for (const auto& elem : s) { std::cout << elem << " " << std::endl; } } class Todo { friend std::ostream& operator<<(std::ostream& o, const Todo& td); }; std::ostream& operator<<(std::ostream& o, const Todo& td) { o << "[ 중요도: " << td.priority << "] " << td.job_desc; return o; } int main() { std::set<Todo> todos; print_set(todos); }
'공부 > C++' 카테고리의 다른 글
C++ 저장&링킹 (1) | 2025.03.01 |
---|---|
C++ 컨테이너 클래스 (0) | 2025.03.01 |
new&delete (0) | 2025.03.01 |
포인터 (0) | 2025.02.22 |
C++ main()에 대해 (0) | 2025.02.19 |