본문 바로가기

Software/C/C++

const 상수 사용

다음을 통해 상수의 사용을 정확하게 이해하자.


/*
//-------------------------------------------------------------------------------
case 1: const변수에 초기화 - 멤버 변수를 initializer 를 통해 초기화 해야 한다.
*/
class AA{
const int conval;
....
}

AA():conval(2)
{
.....
}

/*
//-------------------------------------------------------------------------------
case 2: Member함수가 const가 되면, 이 함수를 통해서 멤버 변수의 값이 변경되는 것은 허용되지 않는다..
*/

/*
//-------------------------------------------------------------------------------
case 3: const 함수는 non const함수의 호출을 허용하지 않을 뿐만 아니라 멤버 변수의 포인터를 리턴하는 것도 허용하지 않는다.
*/

/*
//-------------------------------------------------------------------------------
case 4: 객체가 const되면 어떤 경로를 통해서든 멤버 변수의 변경은 불가능. 멤버 상수 함수만 호출 가능. 일반 멤버 함수는 값을 변경하지 않아도 호출 불가능
*/

/*
//-------------------------------------------------------------------------------
case 5: #define보다 const를 사용하므로 debugging이 편리하다.
*/

/*
//-------------------------------------------------------------------------------
case 6: 변수의 상수화는 값의 변경을 허용하지 않는다.
*/
const double PI=3.14;
PI=3.1415; //<--Compile error

/*
//-------------------------------------------------------------------------------
case 7: 초기화를 어디서 하는냐에 따라 값은 달라진다.
*/
const int val; //variable val is already initialized by a garbage value
val = 20; //<--compile error

/*
//-------------------------------------------------------------------------------
case 8: const와 pointer
*/