연산자 오버로딩은 두 가지 형태가 있다.
1. 외부 함수로 구현되고 클래스에 프렌드로 선언되는 경우
Color operator+(Color op1, Color op2); //외부 함수
class Color {
...
friend Color operator+ (Color op1, Color op2);
}
2. 클래스의 멤버 함수로 작성되는 경우
class Color {
...
Color operator+ (Color op2);
}
1. 두 개의 Power 객체를 더하는 + 연산자를 작성하시오
만약 객체끼리의 합이 아니라 객체+정수 라면 Power operator+(int op2)로 연산자 함수를 선언해야 한다.
2. 두 Power 객체를 더하는 += 연산자를 작성하시오
3. 전위 ++a 연산자를 작성하시오
4. 후위 a++ 연산자를 작성하시오
후위 연산자는 그 선언 형태가 조금 특이한데, 이유는 전위 연산자와 같은 형태로 선언을 하면 그 둘을 구별할 수 없기 때문에, 실제로는 쓰지 않는 정수 값을 매개변수로 넘겨주어 전위 연산자와 후위 연산자를 구별하게 한다.
5. 2+a 덧셈을 위한 + 연산자 함수를 프렌드로 작성하시오
b = a+2는 컴파일러가 b = a. +(2)로 인식하여 기존 형태처럼 함수를 작성하지만,
b = 2+a는 위와 같이 변환하면 b = 2. +(a)가 되는데 이는 컴파일러가 인식을 하지 못한다.
따라서 컴파일러는 b = +(2, a)의 형태로 변환하고 그에 맞추어 연산자 함수를 작성해 주어야 한다.
6. 단항 연산자 ++를 프렌드로 작성하시오
전위 연산자 ++a와 후위 연산자 a++는 모두 참조 매개변수를 사용하는 것은 같지만 리턴 타입이 다른 것에 주의하자
프렌드 선언에서도 마찬가지로 후위 연산자의 매개변수 int x는 의미 없는 값으로 전위 연산자와 구분하기 위함이다.
7. 참조를 리턴하는 << 연산자를 작성하시오
'C++' 카테고리의 다른 글
C++ 실습 문제 14 (Class Inheritance) (0) | 2022.05.02 |
---|---|
C++ 실습 문제 13 (연산자 오버로딩) (0) | 2022.04.19 |
C++ 실습 문제 11 (Friend) (0) | 2022.04.17 |
C++ 실습 문제 10 (Static) (0) | 2022.04.11 |
C++ 실습 문제 9 (Default parameter ) (0) | 2022.04.11 |