본문 바로가기
Programming/C++

Const(상수)

by 꿈꾸는 띵땅근 2020. 12. 26.
학습내용
1. const의 위치에 따른 문법 차이
2. 함수 뒤 const
3. class 안의 메써드 const 인자

1. const의 위치에 따른 문법 차이


- 1. 앞에 붙는 경우

정수형 포인터가 가리키고 있는 값이 const라는 의미. 

즉, 가리키는 값을 바꿀 수 없다. 


- 2. 뒤에 붙는 경우

포인터 주소값이 const라는 의미. 

포인터가 가리키는 값은 바꿀 수 있되, 가리키는 주소를 바꿀 수 없다. 

 

 

 

 

 

 

2. 함수 뒤 const


- 특징 1. 

위의 함수가 존재한다고 할 때, IsNotZero()라는 함수 뒤의 const의 역할은 무엇일까?

 

바로 이 함수 안에서는 어떤 변수도 바꿀 수 없음(mutable은 예외)를 뜻한다.

함수가 클래스 멤버인 경우에만 const 키워드를 함수 뒤에 삽입 할 수 있으며 해당 함수가 속한 객체의 멤버 변수를 변경 할 수 없다는 뜻이다.

 

- 특징 2. const가 붙은 함수 내부에서 다른 함수를 호출할 때, const가 붙지 않은 함수는 호출할 수 없다. 

 

21.03.17. 아오.. 이것때문에.. 자꾸 class 내부에서 벡터를 선언했는데, push_back이 안되는거다.. 왜 그런가 봤더니, 

함수뒤에 const가 붙어있었고, 그랬기 때문에, class 내부의 변수인 벡터를 손댈 수 없었던것이다. 

 

 

 

 

 

 

 

3. class 안의 메써드 const 인자


 

저렇게 하면 KImageColor가 하나 생성된다. 반면, 아래와 같이 참조자를 붙이면 새로 생성하는 일 없이 그냥 참조해서 받아쓴다. 이렇게 되면 앞에 const 붙으나 마나 인것같다. (뭐지?)

 

자료형이 복잡해서 그런것같은데, 

const int& a 이런건 당연히 안되므로, 아래는 특이한 케이스겠지

 

 

 

 

 

 

 

 

 

 

 

 


출처
 

C 프로그래밍 : const (상수) 에 대하여

C Programming C 프로그래밍 const (상수) 에 대하여 상수(Constant)는 변수의 반대(?) 개념으로 생각하면 될듯하다. 즉 변수는 상황에 따라 그 값이 변경가능하지만 상수인 const 로 지정을 하면 그 값을 '

ra2kstar.tistory.com

 

 

C++ 함수 뒤에 const - dydtjr1128's Blog

Const after function class Number { public: int GetNum() { return num; } bool IsNotZero() ...

dydtjr1128.github.io

 

댓글