본문 바로가기
프로그래밍/c++

c++ const

by -현's- 2013. 6. 20.
반응형



●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

댓글