상세 컨텐츠

본문 제목

[TIL] 1 - 5. 객체지향 기본 문법 - const의 이해

언어/C++

by 민:하 2022. 2. 8. 03:55

본문

1. const의 의미

변수 선언 시 자료형 앞이나 뒤에 const라는 명령어를 붙여서 변수에게 상수의 성격을 부여한다.

  • const로 선언된 변수는 상수처럼 사용된다. (읽기 전용변수)
  • 특징
    • const 변수는 반드시 선언문에서만 초기화 가능
    • const 변수가 선언문에서 초기화하지 않으면 컴파일 에러
    • 초기화 이후에는 실행문에서 그 값을 변경 불가

 

① double형 type의 pi라는 변수명으로 메모리 할당

② pi에 3.14 저장

③ pi변수를 const로 보호(읽기 가능, 쓰기 불가)

 


2. const의 사용 목적

  • C언어에서 상수값 사용을 위해 사용되었던 #define을 대체
  • 함수나 메서드(class의 멤버함수)의 parameter를 const로 지정하여 수정을 불가능하게 함
  • const 형태의 리턴
1
2
3
4
const char * sevenPass(const char *ptr) {
    for(int i = 0; i < 7; i++) ptr++;
    return ptr;
}
cs

3. 포인터와 const

포인터에 const를 사용할 경우에는 포인터의 대상이 상수화되는 경우와 포인터변수 자체가 상수화 되는 경우가 있다.

  • 포인터의 대상이 const화 되는 경우

  • 포인터 변수가 const화 되는 경우


4. const 포인터 변수와 일반 포인터 변수 대입

  • 포인터 변수의 대입 가능여부
    • int * = int *                   ( 가능 )
    • const int * = int *           ( 가능 )
    • int * = const int *          ( 불가능 )
    • const int * = const int *   ( 가능 )

5. const 포인터 변수와 일반 포인터 변수의 함수 오버로딩

  • 컴파일러는 일반 포인터 변수와 const를 사용한 포인터 변수를 서로 다른 자료형으로 인식
  • 함수 오버로딩 가능
    • ex) void func( char *cp );     void func( const char *cp );
  • 포인터 변수가 아니면 오버로딩 불가 → 호출하는 모양이 같아 모호성 에러
    • ex) void func( int );             void func( const int );     →   func(7);

6. 외부변수를 const 변수로 선언

외부변수에 const를 사용하면 사용영역이 하나의 파일로 제한된다.

  • 같은 const변수를 여러 파일에서 사용 가능
  • 보통 헤더파일로 작성하여 파일에 포함시키는 형태로 사용
  • const변수를 함수 선언 시 사용 가능
    • ex) int ary[ ArySize ] = {10, 20, 30};

관련글 더보기

댓글 영역