2010년 3월 16일 화요일

LPSTR, LPCSTR, LPCTSTR…

LPSTR :  A 32-bit pointer to a character string.
         이 데이터 형같은 경우 예전에 우리가 사용하던 방식으로 선언하면
         char *
         와 같은 경우이죠. 유니코드를 지원하지 않기 때문에 각각의
         문자는 1바이트를 가집니다.

LPCSTR :  A 32-bit pointer to a constant character string.
         이 데이터 형같은 경우 예전에 우리가 사용하던 방식으로 선언하면
        const char *
         와 같은 경우이죠. const 형이 어떤건지는 아시죠? 이것역시
         유니코드를 지원하지 않기 때문에 각각의 문자는 1바이트를 가집니다.        

LPTSTR : A 32-bit pointer to a character string that is
           portable for Unicode and DBCS
          이 데이터 형같은 경우, 윈도우즈가 유니코드를 지원하면서 새로
          생긴형식으로 풀어쓰면 다음과 같습니다.
          TCHAR *
          이 형은 유니코드를 지원하기 때문에 각 문자가 2바이트를 가지게
          됩니다. 실제로 유니코드를 지원하는 프로그램을 작성하지 않는
          이상 거의 사용하지 않습니다.

LPCTSTR : A 32-bit pointer to a constant character string that
            is portable for Unicode and DBCS.
          이것 역시 윈도우즈가 유니코드를 지원하면서 새로 생긴형식으로
          풀어쓰면 다음과 같습니다.
         const TCHAR *
          마찬가지로 유니코드를 지원하기 때문에 한문자가 2바이트 크기를
          가지게 됩니다.

함수뒤에 const 를 붙이는건 클래스 멤버함수내에서 this 사용을 제한하기 위해서 사용합니다.
일반적으로 멤버 함수내에서 사용되는 this는 해당 클래스가 MyClass 인 경우에,

MyClass * const this;

와 같이 내부적으로 선언되어서 사용되는데, 함수의 뒤에 const를 붙이면

const MyClass * const this;

와 같이 속성이 바뀌어져서 사용됩니다. 즉 내부에 사용되는 데이터 멤버가 이 함수에서는 모조리
읽기 전용으로 바뀌어져 버리는거죠…

this 변수가 가리키는 멤버들이 모두 쓰기 불능으로 되어버리기 때문에… 즉, this는 우리가 직접
변경할수 없기 때문에 함수뒤에 const를 붙여 간접적으로 this를 const형으로 변경하는 기능을
구현한겁니다.

댓글 없음:

댓글 쓰기