C++/Overloading 2021. 3. 16. 00:26

첨자 연산자 오버로딩 (Subscript Operator Overloading)

  • [](subscript operator) 내부에 숫자 뿐만 아니라 문자 등 다양한 자료형이 들어갈 수 있다.

예제

  #include <iostream>

  class IntList
  {
    int    list_[10];

  public:
    int& operator [] (const int index)
    {
      return list_[index];
    }
  };

  int        main()
  {
    using namespace std;

    IntList my_list;
    my_list[3] = 1;
    cout << my_list[3] << endl;
    my_list[3] = 10;
    cout << my_list[3] << endl;
  }

  /* stdout
  1
  10
  */
  • const를 사용할 경우

    #include <iostream>
    
    class IntList
    {
      int    list_[10] = { 0, 1, 2, 3, 4, 5 };
    
    public:
      int& operator [] (const int index)
      {
        return list_[index];
      }
    
      const int& operator [] (const int index) const
      {
        return list_[index];
      }
    };
    
    int        main()
    {
      using namespace std;
    
      const IntList my_list;
    
      cout << my_list[3] << endl;
    }
    
    /* stdout
    3
    */