728x90
- 함수가 오버로딩 되면, 오버로딩 된 수만큼 다양한 기능을 제공한다 - 이름은 하나지만 기능은 여러가지
- 연산자 또한 가능하다
- ‘operator’ 키워드와 ‘연산자’를 묶어서 함수의 이름을 정의하면, 함수의 이름을 이용한 함수의 호출뿐만 아니라, 연산자를 이용한 함수의 호출도 허용
- 연산자를 오버로딩 하는 두 가지 방법
- 멤버함수에 의한 연산자 오버로딩
- 전역함수에 의한 연산자 오버로딩
- 동일한 자료형을 대상으로 +연산자를 전역함수 기반으로, 그리고 멤버함수 기반으로 동시에 오버로딩 할 경우, 멤버함수 기반으로 오버로딩 된 함수가 전역함수 기반으로 오버로딩 된 함수보다 우선시 되어 호출
- 오버로딩이 불가능한 연산자의 종류
- . - 멤버 접근연산자
- .* - 멤버 포인터 연산자
- :: - 범위 지정 연산자
- ?: - 조건 연산자(3항 연산자)
- sizeof - 바이트 단위 크기 계산
- typeid - RTTI 관련 연산자
- static_cast - 형변환 연산자
- dynamic_cast - 형변환 연산자
- const_cast - 형변환 연산자
- reinterpret_cast - 형변환 연산자
- 오버로딩을 제한하는 이유 C++의 문법규칙을 보존하기 위해서
- 멤버함수 기반으로만 오버로딩이 가능한 연산자
- = - 대입 연산자
- () - 함수 호출 연산자
- [] - 배열 접근 연산자(인덱스 연산자)
- → - 멤버 접근을 위한 포인터 연산자
- 이들은 객체를 대상으로 진행해야 의미가 통하는 연산자들이기에 , 멤버함수 기반으로만 연산자 오버로딩을 허용한다
- 연산자 오버로딩 주의사항
- 본래의 의도에 벗어난 형태의 연산자 오버로딩은 좋지 않다
- 연산자의 우선순위와 결합성은 바뀌지 않는다
- 매개변수의 디폴트 값 설정이 불가능하다
- 연산자의 순수 기능까지 빼앗을 수는 없다
728x90
'언어 > C++' 카테고리의 다른 글
C & C++.1 (1) | 2024.02.07 |
---|---|
1. Introduction to the C++ (1) | 2023.10.02 |
가상(Virtual)의 원리와 다중상속 (0) | 2023.01.31 |
8. 상속과 다형성 (0) | 2023.01.26 |
7. 상속(Inheritance)의 이해 (0) | 2023.01.26 |