ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Const 위치에 따른 특징
    랭귀지/C\C++ 2009. 10. 15. 15:43

    CDump& CDump::Func(const char* pt);

    CDump& CDump::Func(char* const pt);

    const CDump& CDump::Func(char* pt);

    CDump& CDump::Func(char* const pt) const;

     

    위치 상으로는 4가지이지만 이게 조합되면 더 많은 경우가 발생하게 된다.

     

     1. CDump& CDump::Func(const char* pt);

     

    이 경우는 Func 메소드에서 pt 포인터 변수에 문자열의 주소를 받고,이때 Func 메소드에서는 pt 포인터 변수가 가리키는 문자열의 공간의 데이터를 상수화 되어 데이터자체를 변경할 수 없다. 하지만 pt 변수는 다른 문자열 주소를 받을 수 있다. pt는 변수를 const한게 아니라 가리키는 곳을 const한 것이므로 데이터만 수정할 수 없다는 것이 특징.

     

    2. CDump& CDump::Func(char* const pt);

     

    이 경우는 Func메소드에서 pt 포인터변수에 문자열의 주소를 받는다.

    이때 pt는 주소를 받으면서 변수가 아니라 상수라는 의미이다.달리 말하면 pt라는 변수에 다른 주소를 넣을 수 없지만 pt가 가리키고 있는 데이터공간은 const가 아니므로 데이터를 수정할 수 있다. CDump& CDump::Func(const char* pt); 메소드와의 큰 차이점.

     

    3. const CDump& CDump::Func(char* pt);

     

    이 메소드의 경우는 문자열을 주소를 받아서 처리하는데 Func메소드로 리턴되는 객체에 대해서 const 화 합니다. 이 메소드로 받는 객체는 const이므로 객체내의 변수나 데이터를 수정할 수 없습니다.

     

    4. CDump& CDump::Func(char* const pt) const;

     

    이 메소드는 Func 메소드를 처리하는 동안 자신의 객체를 const화 한다.이 메소드를 처리할 동안 객체의 모든 데이터를 수정할 수 없다는 의미이고.const CDump& CDump::Func(char* pt); 이 메소드와의 차이점은 시점차이이다.const CDump& CDump::Func(char* pt); 이 메소드는 메소드내에서는 자신의 모든 데이터를 수정하거나 가공할 수있지만 리턴 된 객체로 처리할때에는 const되는 것이특징.

    하지만  CDump& CDump::Func(char* const pt) const; 이 메소드는 리턴 된 자신의 참조형 객체는 const 하지 않기 때문에 리턴된 객체로 데이터를 수정하거나 가공할 수 있고 즉, 메소드 뒤에 const는 메소드를 처리할 동안에 자신의 객체는 const화 한다는 의미이다.

     

    댓글

Designed by Tistory.