char operator[] (int index)char& operator[] (int index) const이 두 개의 차이점이 뭔가요?하는 기능은 같은 것 같은데 차이점을 잘 모르겠습니다
아 그리고 리턴타입이 &이 붙으면 뭐가 다른지도 잘 모르겠어요
&가 붙으면 레퍼런스를 리턴하니까 a[i]=‘z’이런게 되겠죠 - 164260의 휘발성 계정
그럼 =에서 왼쪽에 오는 게 lvalue라 하고 그건 리턴 타입이 레퍼런스가 되는 건가요? 지금 정확히 이해가 안 돼서 헷갈리네요 ㅠㅠ
레퍼런스니까 lvalue가 될 수 있죠 - 164260의 휘발성 계정
그럼 만약에 char& operator[]를 정의하지 않고 char operator[]만 정의한 상태에선 a[i]="z";를 사용할 수 없는 건가요?
a가 배열이거나 오퍼레이터 오버로딩이 정의된 클래스를 퍼블릿으로 상속받은 클래스면 사용가능하겠져
뒤에 const는 함수가 멤버변수를 수정하지 않은다는 뜻임
const는 멤버변수를 수정하지 않는다는걸 보장하는 키워드기 때문에
const가 없으면 const AAA c; 로 정의된 인스턴스가 있다고 하면 if(c[i]=='a') 따위를 할 수 없음
c[i]가 멤버변수를 수정하지 않는다는 보장이 없기 때문에