ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Const Keyword에 대한 정리
    카테고리 없음 2014. 2. 13. 10:20

    const keywrod의 정의

    변수를 상수화 하는 것

    처음에 가능하면 const keyword를 많이 사용하는 것이 좋고 Pointer 대신에 Reference 를 가능한 한 많이 사용을 하라고 하였다.

    여기서는 const의 문법적인 설명보다는 Error 없는 코드를 만들기 위하여 어떻게 const를 사용하는가 하는데 중접을 두어 정리하고자 한다.

    1. Const 변수

      Const double PI = 3.14 이런 변수가 객체에 들어가 메모리를 차지할 필요가 없다.

      차라리 #define PI 3.14 이 훨씬 간결하고 보기 좋다.

      그러나 객체별로 각각 하나의 상수값을 가져야 하는 멤버함수 예를 들면

      Class student
      {
          const int id; // id는 초기화때만 세팅이 가능, 객체가 소멸할 떄가지 불변
          const string name; // 이름도 초기화하면 불변의 값
      int grade;
      }

    2. Const pointer

      Const int* pInt = 0 ; // pInt 가 가리키는 데이타를 보호, 반드시 초기화가 필요

      int const *pInt; // pInt address 자체 즉 포인터의 변경을 금지한다.


      1) pointer data를 보호

      Const int* pInt = new int[10]; // 반드시 초기화 필요, const 변수와 동일

      Int const* pInt = new int[10]; // 위와 동일한 문장 à 틀린것은 아니나 아래것과 혼동되니 사용하지 말자

      pInt[4] = 5 ; // error

      중요한 것 하나는 pint를 통해서 데이타를 바꾸는 것을 보호한다는 것이지, 만일 다른 포인터를 사용하여 같은 데이타를 바꾸는 것은 허용이 된다. 즉 int* aint = pint ; 여기서 ant 를 통해서 데이타를 바꾸는 것은 문제가 없다.

      2) pointer를 보호

      int * const pInt = new int[10];

      pInt[4] = 5; // OK

      pInt++; //error

      Const variable 보다는 훨씬 사용할 때가 많이 있고 또 C++ pointer의 약점을 보완해준다.

       

      3) Pointer와 데이타 모두를 보호

      Const int* const pInt = new int[10];

       

       

       


Designed by Tistory.