#include <iostream>
#include <cassert>
using namespace std;
/*
class IntList
{
private:
int m_list[10];
public:
void setItem(int index, int value)
{
m_list[index] = vlaue;
}
int getItem(int index)
{
return m_list[index]
}
int* getList()
{
return m_list;
}
};
*/
class IntList
{
private :
int m_list[10];
public:
int & operator [] (const int index) // []를 많이 쓰려고 하는 것이기 때문에 if문을 쓰면 느려질 것이라서 assert를 씀
{
assert(index >=0);
assert(index < 10);
return m_list[index];
}
const int & operator [] (const int index) const
{
assert(index >=0);
assert(index < 10);
return m_list[index];
}
};
int main()
{
IntList my_list;
//my_list.setItem(3,1);
//cout << my_list.getItem(3) << "\n";
//my_list.getList()[3] = 10;
//cout << my_list.getList()[3] << "\n"; // getList()가 있으면 헷갈린다.
my_list[3] = 10;
cout << my_list[10] << "\n"; // 만약 const 값에 접근을 하고 싶다, 변경은 안되더라도 출력은 하고 싶다 하면 const를 붙여줘서 구분 가능
return 0;
}