Language/C++

[C++] const 위치에 따른 역할

마탁이 2020. 12. 13. 16:07

1. const ?   

  - 해당 값을 변경하지 않겠다는 의미

 

2. 변수에서 사용

   - const char *

     > 상수형 문자에 대한 포인터

     > 포인터가 가리키는 변수의 값을 변경할 수 없음

     e.g)

char ch1 = 'a';
char ch2 = 'b';
const char *pch;
pch = &ch1;
*pch = 'c' // Error - Read Only Location

   - char const *

     > 문자에 대한 상수형 포인터

     > 포인터 값을 변경할 수 없음

     e.g)

char ch1 = 'a';
char ch2 = 'b';
char *const pch = &ch1;
*pch = 'c';
pch = &ch2 // Error - Read Only variable

 

   - const char cosnt *

     > 변수의 값과 포인터의 값을 변경할 수 없음

     e.g)

char ch1 = 'a';
char ch2 = 'b';
*pch = 'c'; // Error - Read Only Location
pch = &ch2; // Error - Read Only Variable

 

 

3. 함수

  1) 매개변수의 const

    - 'call by reference'로 복사 오버헤드 없이 참조하는 변수를 읽기 전용으로 사용.

  2) 함수명 뒤의 const

    - 해당 함수에서 멤버 변수를 'Read Only'로 사용. (값을 변경할 수 없음)

  3) 함수 반환 타입의 const

    - 함수의 반환 값을 'Read Only'로 사용.

    - 함수가 반환하는 값이 &&(r-value 참조)로 사용하면 수정할 여지가 있음

      이러한 가능성을 제거하고 해당함수가 반환하는 값은 대입 연산자를 통해 복사해서 사용.

'Language > C++' 카테고리의 다른 글

[C++] float 와 double  (0) 2020.12.13
[C++] 배열과 연결 리스트의 차이  (0) 2020.12.13
[C++] Stack과 Heap 의 차이  (0) 2020.12.13
[C++] 동적 할당 (malloc, calloc, realloc, new)  (0) 2020.12.13
[C++] C / C++ 차이  (2) 2020.12.13