*** const
1. const double PI = 3.14; // 변수를 상수화
PI = 1234; // 컴파일 오류
2. const int val; // 포인터가 가르키는 데이터를 상수화
val = 20; // 컴파일 오류
3. int *const pN = &n1; // 포인터 자체를 상수화
pN = 20; // ok
pN = &n2; // 컴파일 오류
4. func() const {} // const 멤버 함수, 이 함수를 통해서 멤버변수의 변경을 허용되지
// 상수화된 함수의 호출 불가능, 멤버 변수의 포인터 리턴 불가능
5. const 객체 // 생성된 인스턴스의 멤버 변수의 변경 불가능
// 상수화된 멤버 함수만 호출 가능
//
6. void func() const {} // 오버로딩을 통해서 const 객체에서 함수를 호출 가능하다
// 비 상수화 함수의 우선순위기 높다.
** 멤버 초기화는 생성자의 몸체 보다 먼저 실행된다.
const 멤버 변수(2.번 스타일)를 초기화할 수 있다.
** static
객체 생성 이전에도 접근이 가능하다. (public 멤버일 경우)
객체의 멤버로 존재하는 것이 아니라 클래스 내에서 직접 접근할 수 있는 권한이 부여된 것이다.
** explicit
묵시적인 호출을 허용하지 않는다.
class A = 10; // 묵시적으로 class A(10); 와 같이 변환되지만 키워드에 의해 컴파일 에러
*** mutable
상수화된 멤버 함수에서도 수정을 가능하도록 멤버 변수를 선언한다.
'프로그래밍 > 언어_스크립트' 카테고리의 다른 글
오랜만에 C++ - (0) | 2017.10.30 |
---|---|
오랜만에 C++ - 스레드 동기화(뮤텍스, 조건변수) (0) | 2017.09.13 |
오랜만에 C++ - 파일 처리 (0) | 2017.09.10 |
오랜만에 C++ - chrono (0) | 2017.09.02 |
오랜만에 C++ - const의 위치 (0) | 2017.09.02 |