[c++] 연산자 오버로딩을 통한 컨테이너 타입의 동작 정의
C++에서 연산자 오버로딩을 사용하면 사용자 정의 타입에 대한 연산을 정의할 수 있습니다. 이를 통해 사용자가 자체적으로 만든 컨테이너 타입(예: 벡터, 리스트, 맵 등)에 대해 산술 연산, 비교 연산 등을 수행할 수 있습니다.
연산자 오버로딩의 기본 개념
C++에서 연산자 오버로딩은 기존 연산자의 동작을 재정의하거나 새로운 연산자의 동작을 정의하는 것을 의미합니다. 이를 통해 사용자 정의 타입의 객체에 대한 연산을 지원할 수 있습니다.
컨테이너 타입의 동작 정의 예제
아래는 사용자가 만든 Vector
클래스를 예로 들어, 해당 클래스에 대한 +
연산자를 오버로딩하여 두 벡터의 요소를 더하는 동작을 정의한 예제 코드입니다.
#include <iostream>
#include <vector>
class Vector {
private:
std::vector<int> elements;
public:
Vector(std::initializer_list<int> list) : elements(list) {}
Vector operator+(const Vector& other) const {
Vector result = *this;
for (size_t i = 0; i < elements.size(); ++i) {
result.elements[i] += other.elements[i];
}
return result;
}
void print() const {
for (int elem : elements) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
};
int main() {
Vector v1 = {1, 2, 3};
Vector v2 = {4, 5, 6};
Vector result = v1 + v2;
result.print();
return 0;
}
위의 예제 코드에서 +
연산자를 오버로딩하여 두 벡터의 각 요소를 더하는 동작을 정의했습니다. v1 + v2
연산은 두 벡터의 요소를 더한 결과를 반환하는데, 이때 Vector
클래스 내부에서 정의한 연산자 오버로딩 동작이 수행됩니다.
마무리
연산자 오버로딩을 통해 사용자 정의 컨테이너 타입에 대한 동작을 정의할 수 있습니다. 이를 통해 코드의 가독성을 높이고 사용자가 직관적으로 해당 타입을 다룰 수 있도록 도울 수 있습니다.
더 많은 정보를 원하시거나 질문이 있으시면 C++ 연산자 오버로딩에 대한 공식 문서를 참고하시기 바랍니다.