모두의 코드 내용을 공부하고 정리한 내용입니다.



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 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;
}




개인 공부 기록용 블로그입니다.
틀린 부분 있으다면 지적해주시면 감사하겠습니다!!

카테고리:

업데이트:

댓글남기기