책에 나와있는 연산자 중복 예제중에
friend vector operator+(const vector& v1,const vector& v2); /////////선언부분
vector operator+(const vector& v1, const vector& v2) ///////정의부
{ vector v(0,0);
v.x = v1.x+v2.x;
v.y = v1.y + v2.y;
return v;
} /////////
이런 부분이 있는데 여기에 const를 붙이고 안 붙이고 차이가 뭐죠????????
객체 매개변수를 const로 선언하고 안 하고 차이를 잘 모르겠습니다.
const 문자를 빼도 오류도 안나고 잘 돌아가니깐.... 차이를 모르겠어요...
어떤 차이가 있나요??
차이가 2개 있는데 하나는 기본적으로 const를 선언하면 함수 안에서 저 값을 수정할 수 없다는거고
나머지 하나는 저 함수를 호출할때 파라미터로 vector를 주지 않았을때 그걸로 vector의 생성자를 암시적으로 호출할 수 있으면 const인경우 암시적 생성자를 호출하고 const가 없으면 컴파일 에러가남
두번째가 뭔말인지 모르겠는데.....;;; 저 제가 좀전에 뜯어고치면서 이것저것 해보는데
const 로 선언했을때 get함수(결정자)로 x나 y값을 받으려고 하니까 에러나는데 그거랑 관련있나요?
네 근데 get을 const로 선언하면 오류가 안날거임
두번째랑은 상관없는 얘긴데 const로 받은 객체의 메서드를 호출할때 그 메서드가 const로 선언돼어있지 않으면 오류가나요
아항~ 감사합니당