C++에서
char operator[] (int index);
char& operator[] (int index) const;
이렇게 [] 오퍼레이터를 오버로딩 하려고 하는데
리턴 타입이 레퍼런스면 lvalue가 될 수 있다는 게
char& operator[] (init index) const; 이 부분이 없으면
a[i] = "z"; 이런식으로 못 쓴다는 얘기인가요?
만약에 a[i] = b[i];가 있다고 치면 a[i]는 char&이고 b[i]는 char인 건가요?
&는 null이 안되니까 밑에껄로 쓰면 선언과 동시에 초기화 해야하는거 아님?
우선 char& operator[](int index) const 이 없으면 a[i] = 'z'; 가 안되는건 맞아.
근데 a[i] = b[i]에선 오퍼레이터가 저렇게 const 값으로 오버로딩 돼있을때는 a,b가 const냐 아니냐에 따라 어떤 오퍼레이터가 불러지는지 정해져.
만약 a가 const고 b가 non-const라면 니가 예상한대로 될거야.