Tech & IT/프로그래밍

const 상수 함수 (함수가 멤버변수를 바꾸는게 없으면 무조건 꼭 const를 붙이자)

해피콧 2012. 3. 21. 10:49
'); }
'); }
const 이야기..
상수 함수.!!
 
class Point
{
public:
int x,y;
Point(int a = 0, int b = 0) : x(a), y(b) {}
void Set(int a, int b) {x = a; y = b;}
void print() const //상수함수, 컴파일러에게 멤버 바꾸는게 없다는 것을 보장해서 알려주는 것
{
cout << x << ", " << y << endl; // read 는 가능..
}
};

int main()
{
const Point p(1,2);
p.x = 10; // error 나야하고 맞음
p.Set(10, 20); // const니가 error나야 하고 맞음
p.print(); //될까? 되야 할까? 안되야 할까? 되야 하죠
          // print()가 상수함수여야만 가능하다.

또 다른 예)
이동하지 못하는 사각형을 만든다면 그 사각형의 면적도 구할 수 없어야 할까요?
면적은 이동하지 못하는 사각형이라도 할 수 있어야 함
면적 구하는 함수는 상수함수로 만든다

//중요~~~
멤버 함수가 멤버변수를 바꾸는게 없으면 무조건 꼭 const를 붙여야 한다.
}