본문 바로가기
코스웨어/09년 내장형하드웨어

Const 함수 (09.8.7 ,류병현)

by 알 수 없는 사용자 2009. 8. 11.
728x90
반응형


#include <stdio.h>
#include <iostream.h>

typedef unsigned int HANDLE;//디파인하기


class CHandle
{
    private:
       HANDLE m_handle;
       int m_data;

     public:
       CHandle()
       {
           m_handle=0;
           m_data=0;
       }

       HANDLE GetHandle() const)//-->const가  붙은 함수 
      {
          printf("gethandle()\n");
          return m_handle;
      }

//C++의 개체에 대한 Qualification (자격,권한)은 3가지 입니다.--> 개체에 내부의  변수나 함수의 정보
//공개여부를 제한할 수 있습니다.
//1.const,2.mutable,3.volatile입니다.
//const는 개체에 상수성을 부여하는 용도와 멤버함수로써, 개체에 대한 상수성을 엄격하게 정의하는 데
//사용됩니다. 일반함수에서 f( const type )으로 정의하는 것과는 성격이 다름니다.
//멤버데이타에 대하여 단지 읽기만 할 수 있다는 뜻입니다.
//mutable은 개체에 상수성을 부여( const usertype obejct; )했는 데,
//그중 유독 상수적으로 사용하지 못하는 멤버데이타에 대하여 적용합니다.그런 상황이 생긴다고 합니다.
//volatile은 시스템에서 발생하는 개체를 정의합니다. 시간이나 그런거요.
//간닥히 말해, 멤버함수중에 단지 읽기만 하는 함수를 정의할 때 씁니다. 
    public:
     void FromHandle(HANDLE handle)//-->const가 안 붙은 함수 
     
{
         m_handle=handle;
     }

};//end of class


void test(HANDLE handle)
{
   printf("Handle=%i\n",handle);
}


int main(int argc, char *argv[])
{
   const CHandle handleObject;//const를 붙여서 객체를 생성한경우

//즉 메인함수에서 객체를 생성시 const를 붙여 생성하게 되면 그 객체내부의 함수는 const가 붙은 함수
//만 호출이 가능하고 나머지는 호출이 불가함.
    handleObject.GetHandle();//호출됨
    HANDLE handle;
    handle=2;
    handleObject.FromHandle(handle);//호출안됨


 return 0;
}

728x90