-
const 멤버 함수의 종류, const 함수내에서 수정가능한 경우@ 16. 1 ~ 17. 1/Effective C++ 2015. 12. 4. 00:31
멤버함수에 붙는 const 키워드 역활은 해당 멤버함수가 상수 객체에 대해 호출될 함수이다 라는 사실을 알려 주는 것이다.
이런 함수가 중요한 이유는?
1. 클래스의 인터페이스를 이해하기 좋게 하기 위한것.
그 클래스로 만등러진 객체를 변경할 수 있는 함수는 무엇이고, 또 변경할 수 없는 함수는 무엇인가? 사용자 쪽에서 알고 있어야 하는것..
2. 이 키워드를 통해서 상수객체를 사용할 수 있게 하자
프로그램의 실행 성능을 높이는 핵심 기법 -> 상수 객체에 대한 참조자로 진행
* 실제 프로그램에서 상수 객체가 생기는 경우 1) 상수 객체에 대한 포인터 혹은 2) 상수 객체에 대한 참조자로 객체가 전달될때..
단순 상수객체 변수의 상황은 거의 없다고 봐도 무방하다..
void print(const Test& ref); //이런식의 형태가 많다
이런 함수들의 대부분은 내부에서 무언가 대입을 하려거나 변경하려고 하지 않는다. 에러가 나기 때문에..
1. const 함수내에서(반환, 함수명, const 형태) static 멤버의 대입과 수정은 가능하다
그 이유는 static 멤버는 객체의 소유가 아니라 클래스 자체의 소유이기 때문이다.
클래스 변수라고도 한다.
2. 멤버로 포인터가 있는데 그 포인터가 가리키는 값을 변경하려는 경우
const 함수내에서 가능하다. int* ptr 을 예로
*ptr = 10 이런식..
그러나
주소를 변경하려고 하면 컴파일 에러가 발생한다.
3. mutable 은 비정적 데이터 멤버를 상수성의 족쇄에서 풀어준다. 즉 대입이 가능하게 해준다.
'@ 16. 1 ~ 17. 1 > Effective C++' 카테고리의 다른 글
기본 대입연산자 생성조건? (0) 2015.12.04 클래스 생성자는 초기화가 아니다. 정적(static)객체의 종류와 방법 (0) 2015.12.04 #define cosnt 상수변수로 바꾸기! operator[], const static, 클래스내 const, define 매크로 (0) 2015.12.03 항목 37 : 어떤 함수에 대해서도 상속받은 기본 매개변수 값은 절대로 변경금지 (0) 2015.01.25 항목 36 : 상속받은 비가상 함수를 파생클래스에서 재정의하지말것 (1) 2015.01.25