반응형
C++에서 연산자 오버로딩은 클래스의 멤버 함수나 프렌드 함수를 사용하여 구현할 수 있습니다. 특히, 두 객체 간의 연산이 필요할 때 프렌드 함수를 사용하면 유용합니다. 예를 들어 두 객체의 값을 더하거나 비교하는 연산자를 오버로딩하고 싶다면, 프렌드 함수를 사용하여 접근 제한을 뛰어넘어 두 객체의 멤버 변수에 접근할 수 있습니다.
다음은 프렌드 함수를 사용하여 + 연산자를 오버로딩하는 예제입니다. Complex라는 클래스가 복소수를 표현한다고 가정하고, 이 클래스에서 + 연산자를 오버로딩하여 두 복소수를 더하는 기능을 구현해보겠습니다.
코드 예제
#include <iostream>
using namespace std;
class Complex {
private:
double real; // 실수 부분
double imag; // 허수 부분
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
// friend 함수를 이용한 + 연산자 오버로딩
friend Complex operator+(const Complex& c1, const Complex& c2);
// 복소수 출력 함수
void print() const {
cout << real << " + " << imag << "i" << endl;
}
};
// + 연산자 오버로딩
Complex operator+(const Complex& c1, const Complex& c2) {
return Complex(c1.real + c2.real, c1.imag + c2.imag);
}
int main() {
Complex c1(3.0, 4.0);
Complex c2(1.5, 2.5);
Complex c3 = c1 + c2; // + 연산자 오버로딩 사용
c3.print(); // 결과 출력: 4.5 + 6.5i
return 0;
}
(Output)
4.5 + 6.5i
설명
- Complex 클래스에는 실수(real)와 허수(imag) 부분을 멤버 변수로 갖습니다.
- operator+ 함수는 Complex 클래스의 프렌드 함수로 선언되어 있으며, 두 개의 Complex 객체를 매개변수로 받아 새로운 Complex 객체를 반환합니다.
- operator+ 함수 내부에서는 두 객체의 real과 imag 값을 각각 더하여 새로운 Complex 객체를 생성하고 반환합니다.
- main 함수에서 + 연산자를 사용하여 두 Complex 객체를 더할 수 있으며, 결과는 print 함수를 통해 출력됩니다.
이와 같은 방식으로, 다른 연산자(-, *, /, ==, != 등)도 필요에 따라 프렌드 함수를 사용하여 오버로딩할 수 있습니다.
반응형
'C_C++' 카테고리의 다른 글
C++, 클래스 생성자에서 동적메모리 사용하는 예 (0) | 2024.11.16 |
---|---|
C++, 단항연산자 오버로딩 (전위 후위 연산자) (0) | 2024.11.15 |
C++, 멤버함수로 연산자 오버로딩 (0) | 2024.11.13 |
C++, typeid() 클래스 이름 알아내기 (0) | 2024.11.12 |
C++, 순수가상함수 Pure Virtual Function (0) | 2024.11.11 |