학습내용
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 이런건 당연히 안되므로, 아래는 특이한 케이스겠지
출처
'Programming > C++' 카테고리의 다른 글
Class 객체 선언 방식 2가지 (0) | 2021.01.01 |
---|---|
C++ 캡슐화, 디폴트 생성자, new, 복사생성자 (0) | 2020.12.27 |
구조체 (0) | 2020.12.27 |
Literal, 참조 / "문자열"이 왜 그렇게 골치아픈가 (0) | 2020.12.27 |
C++ 코드최적화 (0) | 2020.12.26 |
댓글