const에 관한 얘기

2020. 9. 13. 23:11컴퓨터 수업/C++

@일반변수

1. 

일반변수에 const를 지정해놓았다면 이니셜라이징이 필요하다 (초기화가 필요하다.)

 

2.

rvalue로 선언되었기 때문에, 수정할 수 없다.

 

3.

일반변수의 경우엔 datatype 앞에 const가 오든, 뒤에 오든 차이가 없다.

 

@포인터변수

1.

const int

 

즉, constant한 int라고 생각하면 된다. 따라서 pointerVariable이 가르키는 방향 (담고있는 메모리 주소)는 바뀔 수 있으나, 그것이 가르키는 방향에 있는 "자료"는 int로 constant해야한다.

 

근데 사실 좀 어불성설이긴 해, 메모리 주소를 바꾸면 그 방향에 있던 값도 바뀔텐데 이게 뭐하는건가

싶기도 하고... 그저 포인터변수가 아닌 일반변수 세상에서 바꿀 수 없다고 이해를 해 두자

 

메모리주소는 바꿀 수 있는것을 보였다.

 

2.

int const는 const int와 같다고 생각해두자 일단은

 

3.

이로써 알게되었다. const는 그 바로 뒤에 있는것을 const하다고 생각한다.

따라서 int const * 가 아닌, int * const pointerVariable에서 pointerVariable을 const 하다고 생각한다.

 

@메소드 (멤버 함수)

메소드의 argument () 란 뒤에 const를 붙이면 이 메소드(멤버 함수)를 통해 필드(데이터 멤버)를 조작할 수 없다.

 

@참조자(Reference)

 이런식으로 참조자 변수가 원래의 변수를 조작하는걸 막는것에 쓴다. 중요!