Programing/C- programing

C++ : Const 함수 속성

sosal 2010. 9. 14. 10:17
/*
 http://sosal.tistory.com/
 * made by so_Sal
 */



Const는, 일반적으로 변수에 쓰이며, 선언할 때 정의된 값을 변경하지 못하게
하기 위한 '속성' 입니다. 하지만 변수 뿐만아니라 함수에도 const 속성은 사용됩니다.


const 함수의 특징
 - 멤버 변수의 값을 변경하지 않는 멤버 함수

즉, 데이터를 수정하는 함수가 아닐 때, 개발자가 실수로 멤버변수의 값을
바꾸지 못하도록 하는 보안장치라고 볼 수 있습니다.


- 간단한 const 속성을 가진 함수의 선언 방법
함수에 const 속성을 넣는 방법은, 일반 변수 선언과 다르지 않습니다.
const void func();

- const 속성을 가진 객체 멤버 함수를 선언하는 방법
class{
~
    void func() const;
};
기본 타입의 변수가 const라면, 그 변수의 값을 바꿀 수 없었는데,
객체가 const인 경우에는 해당 객체의 멤버변수의 값을 바꿀 수 없습니다.




/*
 * const의 쓰임새를 알 수 있는 과일 객체 예제입니다.
 * GetPrice() 함수는 멤버변수의 값을 수정하지 않습니다.(const)
 * SetPrice() 함수는 멤버변수의 값을 수정합니다.
 */


#include<iostream>
using namespace std;

class fruit{
private:
    int price;
public:
    fruit(int cost){
        price = cost;
    }
    int getPrice() const{
        return price;
    }
    void setPrice(int cost){ // setPrice 함수에는
        price = cost;            // const 속성이 있다면 컴파일에 실패합니다.
    }
};

int
main(){
    fruit apple(3000);
    cout<<apple.getPrice()<<endl;
    apple.setPrice(2000);
    cout<<apple.getPrice()<<endl;

    return 0;
}