C++/Class 2021. 3. 15. 23:39

체이닝(Chaining)

  • 함수의 반환 값을 해당 인스턴스의 레퍼런스로 전달하여, 연속해서 함수를 사용할 수 있도록 하는 기법이다.

  • 아래와 같이 함수를 하나씩 작성하면 귀찮다.

    #include <iostream>
    
    class Calc
    {
      int    value_;
    
    public:
      Calc(const int &value_in)
        : value_{value_in}
      {}
    
      void add(int value) { value_ += value; }
      void sub(int value) { value_ -= value; }
      void mul(int value) { value_ *= value; }
      void print()
      {
        std::cout << value_ << '\n';
      }
    };
    
    int        main()
    {
      Calc cal{ 10 };
    
      cal.add(10);
      cal.sub(1);
      cal.mul(2);
      cal.print();
    }
  • 체이닝을 적용하면 편하다.

    #include <iostream>
    
    class Calc
    {
      int    value_;
    
    public:
      Calc(const int &value_in)
        : value_{value_in}
      {}
    
      Calc& add(int value) { value_ += value; return *this; }
      Calc& sub(int value) { value_ -= value; return *this; }
      Calc& mul(int value) { value_ *= value; return *this; }
      void print()
      {
        std::cout << value_ << '\n';
      }
    };
    
    int        main()
    {
      Calc cal{ 10 };
    
      cal.add(10).sub(1).mul(2).print();
    }

'C++ > Class' 카테고리의 다른 글

C++ 정적 멤버 변수 (Static Member Variable)  (0) 2021.03.15
C++ static (Class)  (0) 2021.03.15
C++ this  (0) 2021.03.15
C++ 소멸자 (Destructor)  (0) 2021.03.15
C++ 변환 생성자(Converting Constructor)  (0) 2021.03.15