[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++의 연산자 오버로딩을 통해 입출력 작업을 사용자 클래스에 대해 확장할 수 있으며, 이를 통해 유연한 입출력 기능을 제공할 수 있습니다.
참조:
- https://www.learncpp.com/cpp-tutorial/93-overloading-the-io-operators/
- http://www.cplusplus.com/doc/tutorial/basic_io/