2013년 2월 20일 수요일

const 객체와 const 객체들의 특성


  1. #include
  2. #include
  3.  
  4. using namespace std;
  5.  
  6. class SoSimple
  7. {
  8. private:
  9.     int num;
  10. public:
  11.     SoSimple(int n):num(n)
  12.     {
  13.  
  14.     }
  15.     SoSimple& AddNum(int n)
  16.     {
  17.         num += n;
  18.         return *this;
  19.     }
  20.     void ShowData() const
  21.     {
  22.         cout<<"num : "<
  23.     }
  24. };
  25.  
  26. void main()
  27. {
  28.     const SoSimple obj(7);//const 객체 생성
  29.     //obj.AddNum(20);//AddNum 은 const 함수가 아니기 때문에 호출 불가
  30.     obj.ShowData();//ShowData는 const 함수 이기때문에 const 객체를 대상으로 호출이 가능
  31.  
  32.     _getch();
  33. }
/*
const 객체와 const 객체들의 특성

변수의 상수화
const int num = 10;

겍체의 상수화
const SoSimple sim(20);
이 객체를 대상으로는 const 멤버함수만 호출이 가능, 데이터 변경 불가
*/
  1. #include
  2. #include
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class SoSimple
  8. {
  9. private:
  10.     int num;
  11. public:
  12.     SoSimple(int n):num(n)
  13.     {
  14.  
  15.     }
  16.     SoSimple& AddNum(int n)
  17.     {
  18.         num += n;
  19.         return *this;
  20.     }
  21.     void SimpleFunc()
  22.     {
  23.         cout<<"SimpleFunc : "<
  24.     }
  25.  
  26.     void SimpleFunc() const
  27.     {
  28.         cout<<"const SimpleFunc"<
  29.     }
  30. };
  31.  
  32. void YourFunc(const SoSimple &obj)
  33. {
  34.     obj.SimpleFunc();
  35. }
  36.  
  37. void main()
  38. {
  39.     SoSimple obj1(2);
  40.     const SoSimple obj2(7);
  41.  
  42.     obj1.SimpleFunc();
  43.     obj2.SimpleFunc();
  44.  
  45.     YourFunc(obj1);
  46.     YourFunc(obj2);
  47.  
  48.     _getch();
  49. }
/*
const 선언유무도 함수 오버로딩 조건에 해당 된다.
void SimpleFunc() const
{
//값만 벼경되지 않는다면 const 가 아닌 변수에 접근도 가능하다.
cout<<"const SimpleFunc"<
}
*/

출처 열혈강의 C++

댓글 없음:

댓글 쓰기