[c++] 연산자 오버로딩을 통한 입출력 작업의 확장

C++에서는 클래스의 멤버 함수로써 연산자를 오버로딩하여 사용자 정의 데이터 형식에 대한 입출력 작업을 확장할 수 있습니다. 특히 <<>> 연산자를 오버로딩하여 객체를 출력하고 입력하는 기능을 정의할 수 있습니다. 이러한 기능을 통해 사용자가 정의한 클래스의 객체를 입출력 스트림에 직접 적용할 수 있습니다.

<< 연산자 오버로딩

<< 연산자를 오버로딩하여 객체를 출력하는 기능을 정의할 수 있습니다. 이를 통해 사용자가 정의한 클래스의 객체를 원하는 형태로 출력할 수 있습니다. 아래는 << 연산자를 오버로딩하여 클래스의 객체를 출력하는 예제 코드입니다.

#include <iostream>
using namespace std;

class MyClass {
public:
    int data;
    friend ostream& operator<<(ostream& os, const MyClass& obj) {
        os << "Data: " << obj.data;
        return os;
    }
};

int main() {
    MyClass obj;
    obj.data = 10;
    cout << obj;  // 객체를 출력
    return 0;
}

위 예제 코드에서 << 연산자를 friend 함수로써 오버로딩하여 MyClass 객체를 출력하고 있습니다.

>> 연산자 오버로딩

>> 연산자를 오버로딩하여 객체를 입력받는 기능을 정의할 수 있습니다. 이를 통해 사용자가 정의한 클래스의 객체에 사용자 입력값을 넣을 수 있습니다. 아래는 >> 연산자를 오버로딩하여 클래스의 객체를 입력받는 예제 코드입니다.

#include <iostream>
using namespace std;

class MyClass {
public:
    int data;
    friend istream& operator>>(istream& is, MyClass& obj) {
        is >> obj.data;
        return is;
    }
};

int main() {
    MyClass obj;
    cin >> obj;  // 객체에 입력값 넣기
    cout << "Data: " << obj.data;  // 입력받은 값 출력
    return 0;
}

위 예제 코드에서 >> 연산자를 friend 함수로써 오버로딩하여 MyClass 객체에 입력값을 넣고 있습니다.

C++의 연산자 오버로딩을 통해 입출력 작업을 사용자 클래스에 대해 확장할 수 있으며, 이를 통해 유연한 입출력 기능을 제공할 수 있습니다.


참조: