class Car
{
public:
	Car() { price = 0; }
	~Car(){}

	void setPrice(const int& price)
	{
		this->price = price;
	}
	int getPrice() { return price; }

private:
	int price;
};

int main() {
	const Car car;
	car.setPrice(10); // error!
	car.getPrice(); // error!
}

// car 를 const 로 생성했다. 객체 car 의 멤버의 값을 바꿀 수 없다.
// set 뿐 아니라 get 까지도.. 왜? 멤버 함수가 const 인지 여부를 보기 때문이다.
class Car
{
public:
	Car() { price = 0; }
	~Car(){}

	void setPrice(const int& price) const // 함수 안에서 값을 바꾸지 못하기 때문에 error다.
	{
		this->price = price;
// price 가 mutable 이라면 가능은 하다...
	}
	int getPrice() const { return price; } // const 붙여주면 사용 된다.

private:
	int price;
};

int main() {
	const Car car;
	car.getPrice(); // 가능하다.
}