소프트웨어/c++

const 벰버 함수와 비 const 멤버 함수

개발자_이훈규 2015. 10. 9. 13:21


const 멤버 함수는 멤버 함수 내에서 객체의 멤버 변수를 변경하지 않는다는 것을 보장하는 함수입니다. 따라서 const 객체는 const 멤버 함수만 호출할 수 있습니다. const 멤버 함수에서 멤버 변수를 변경하면 컴파일 에러입니다. 사실 자신의 멤버를 변경하지 않는 멤버 함수는 모두 const 멤버 함수여야만 합니다.



function의 맨 뒤에 const가 붙으면 그 function은 const function이고,

변수 앞에 const가 붙으며 그 변수가 const이다. 



case 1.

에러 메세지:

main.cpp: In function ‘int main(int, char**)’:

main.cpp:44:14: error: passing ‘const Point’ as ‘this’ argument of ‘void Point::setX(int)’ discards qualifiers [-fpermissive]

     p1.setX(5);

              ^

main.cpp:46:14: error: passing ‘const Point’ as ‘this’ argument of ‘void Point::setY(int)’ discards qualifiers [-fpermissive]

     p1.setY(5);

              ^



case 2.

에러 메세지:

main.cpp: In member function ‘void Point::setPoint(Point)’:

main.cpp:30:23: error: passing ‘const Point’ as ‘this’ argument of ‘void Point::setX(int)’ discards qualifiers [-fpermissive]

         _point.setX(10);    // will error