wrapper 클래스
모두의 코드 내용을 공부하고 정리한 내용입니다.
wrapper 클래스
- wrapper 클래스는 무언가를 포장하는 클래스라는 의미
- 아래 int 자료형을 객체로 다루는 예시를 보자
class Int
{
int data;
// some other data
public:
Int(int data) : data(data) {}
Int(const Int& i) : data(i.data) {}
};
- 이렇게 Int라는 객체를 만들어 int형 데이터를 저장하니 int자료형처럼 사용할 수 있다.
- 어떨 땐 int형 그 자체 타입으로 사용할 필요가 있고 또 어쩔 때 나만의 클래스 타입으로 사용할 필요가 있을 수 있다
- 이럴 때 Wrapper클래스를 사용한다.
- 하지만 정확히 int 자료형 처럼 사용하기 위해 관련 연산을 하는 함함수들을 다 만들어줘야 한다.
- 하지만 그러기에에 너무나 많은 함수를 만들어야 할 수 있다.
- 그래서 컴파일러가 Int형 클래스 즉 wrapper 클래스 자체를 원하는 타입으로 해석하도록 만들자
타입 변환 연산자
- 타입 변환 연산자는 다음과 같이 정의한다.
- operator변환 하고자 하는 타입()
주의할 점 리턴 타입을 작성하면 안 된다.
- operator변환 하고자 하는 타입()
- 위 예시에 타입 변환 연산자를 정의하면
operator int() { return data; }
이렇게 된다. - 이제 우리의. Wrapper 클래스의 객체를 읽는데에는 문제가 없다.
#include <iostream>
class Int {
int data;
// some other data
public:
Int(int data) : data(data) {}
Int(const Int& i) : data(i.data) {}
operator int() { return data; }
};
int main() {
Int x = 3;
int a = x + 4;
x = a * 2 + x + 4;
std::cout << x << std::endl;
}
개인 공부 기록용 블로그입니다.
틀린 부분 있으다면 지적해주시면 감사하겠습니다!!
댓글남기기