Chapter 10. 연산자 중복¶
'명품 C++Programming - 황기태' 7장 학습 내용
1절. 연산자 중복
2절. 이항 연산자
3절. 단항 연산자
1절. 연산자 중복¶
C++의 연산자 중복¶
- C++ 언어에서 연산자 중복 가능
- C++ 언어에 본래부터 있던 연산자에 새로운 의미 정의
- 높은 프로그램 가독성
- 간결한 의미 전달
- 다형성
연산자 중복의 사례¶
- 정수 덧셈
- 문자열 혼합
- 색깔 혼합
- 배열 결합
SortedArray a(2, 5, 9), b(3, 7, 10), c;
c = a + b;
// c = {2, 3, 5, 7, 9, 10}
// 정렬된 두 배열을 결합(merge)한 새로운 배열 생성
연산자 중복의 특징¶
- C++에 본래 있는 연산자만 중복 가능
- 컴파일 오류 발생 예시
- 3 %% 5
- 6 ## 7
- 피연산자 타입이 다른 새로운 연산 정의
- 연산자는 함수 형태로 구현 : 연산자 함수(operator funcion)
- 반드시 클래스와 관계를 가짐
- 피연산자의 개수를 바꿀 수 없음
- 연산의 우선 순위 변경 안됨
-
모든 연산자가 중복 가능하지 않음
-
중복 가능한 연산자
- 중복 불가능한 연산자
연산자 함수¶
- 연산자 함수 구현 방법 2가지
- 클래스의 멤버 함수로 구현
- 외부 함수로 구현하고 클래스에 프렌드 함수로 선언
- 연산자 함수 형식
+와 == 연산자의 작성 사례¶
- 연산자 함수 작성이 필요한 코드
Color a(BLUE), b(RED), c;
c = a + b;
// a와 b를 더하기 위한 + 연산자 작성 필요
if(a == b){
...
}
// a와 b를 비교하기 위한 == 연산자 작성 필요
- 외부 함수로 구현되고 클래스에 프렌드로 선언되는 경우
Color operator+(Color op1, Color op2);
bool operator==(Color op1, Color op2);
// 외부 함수
class Color{
...
friend Color operator+(Color op1, Color op2);
friend bool operator==(Color op1, Color op2);
};
- 클래스의 멤버 함수로 작성되는 경우
2절과 3절에 예시로 사용될 클래스¶
class Power{
int kick;
int punch;
public:
Power(int kick = 0, int punch = 0){
this->kick = kick;
this->punch = punch;
}
};
2절. 이항 연산자¶
+ 연산자 중복¶
- 예제 1. + 연산자 예제
SourceCodeChecking
== 연산자 중복¶
- 예제 2. == 연산자 예제
SourceCodeChecking
+= 연산자 중복¶
- 예제 3. += 연산자 예제
SourceCodeChecking
+ 연산자(정수형 매개 변수) 중복¶
- 예제 4. 정수형 매개 변수를 가진 + 연산자 예제
SourceCodeChecking
3절. 단항 연산자¶
단항 연산자 중복¶
- 단항 연산자
- 피연산자가 하나 뿐인 연산자
- 연산자 중복 방식은 이항 연산자의 경우와 거의 유사
- 단항 연산자 종류
- 전위 연산자(prefix operator)
- !op, ~op, ++op, --op
- 후위 연산자(postfix operator)
- op++, op--
전위 ++ 연산자 중복¶
- 예제 5. 전위 ++ 연산자 예제
SourceCodeChecking
!연산자 중복¶
- 예제 6. !연산자 예제
SourceCodeChecking
후위 ++ 연산자 중복¶
- 예제 7. 후위 ++ 연산자 예제
SourceCodeChecking
2 + a 덧셈을 위한 + 연산자 함수 작성¶
- 예제 8. 정수형 매개 변수를 가진 + 연산자 프렌드 작성 예제
SourceCodeChecking
+ 연산자를 외부 프렌드 함수로 구현¶
- 예제 9. 객체 끼리의 덧셈을 위한 + 연산자 프렌드 작성 예제
SourceCodeChecking
단항 연산자 ++를 프렌드로 작성¶
-
전위 연산자
-
후위 연산자
-
예제 10. ++ 연산자 프렌드 작성 예제
SourceCodeChecking -
예제 11. << 연산자 작성 예제
SourceCodeChecking