●const 쓰임
- 변수 선언 앞에 붙어서 변수를 상수화 한다.
ex)
const int a=10;
a=5; //컴파일 오류
- 포인터가 가리키는 데이터를 상수화 한다.
ex)
int n=10;
const int* pN=&n;
*pN=20; //컴파일 어류
- 포인터 선언할때 이름 앞에 붙어서 포인터 자체를 상수화 한다.(포인터가 가리키는 대상이 고정됨
ex)
int a=10;
int b=20;
int *const pA=&a;
pA=&b; //컴파일 오류
●상수화된 멤버변수의 초기화
- 객체를 생성하면 멤버 변수가 초기화된다. 상수화된 멤버변수도 처음에 쓰레기값으로 초기화된다. const로 선언되었기 때문에 일반적인 방법으로는 이 값을 사용자가 원하는 값으로 변경할 수 없다. 이때 '멤버 이니셜라이저'라는 문법을 이용하면 const 멤버변수를 초기화 할 수 있다.
- 함수 뒤에 ' :상수명(인자명), 상수명(인자명) ' 을 써주면 된다. (멤버 변수 '상수명'을 '인자명'으로 초기화 하라)
ex)
●const 맴베 함수
- 멤버 함수에 const를 선언하면 멤버 함수를 상수화하겠다는 뜻이다.
- 멤버 변수가 상수화되면, 이 함수를 통해서 멤버 변수의 값이 변경되지 않는다.
- 상수화된 멤버 함수는 상수화되지 않은 함수의 호출을 허용하지 않는다.
- 상수화된 멤버 함수는 멤버 변수의 포인터를 리턴하는 것을 허용하지 않는다.
ex)
●const 객체
- 객체를 const로 선언하면 객체 생성과 동시에 상수화한다.
- 객체가 상수화 되면 멤버 변수의 조작은 불가능하고, 상수화된 멤베 함수만 호출 가능하다.
- 일반 멤버 함수는 멤버 변수를 조작하지 않더라도 호출 불가능하다.
ex)
const Abc abc; //const 클래스명 객체명;
●const로 선언한 멤버 함수의 오버로딩
- const로 선언한 멤버 함수도 오버로딩 가능하다.
- 예를 들어 'void function(){}' 와 void function() const {}'는 다른 함수로 본다.
ex)
'프로그래밍 > c++' 카테고리의 다른 글
c++ 상속(Inheritance) (0) | 2013.06.23 |
---|---|
c++ static (0) | 2013.06.21 |
c++ 복사생성자 (0) | 2013.06.19 |
c++ 클래스(class) 3 (0) | 2013.06.19 |
c++ 클래스(class) 2 (0) | 2013.06.17 |
댓글