본문 바로가기
프로그래밍/언어_스크립트

오랜만에 C++ - const, static, explicit, mutale

by 써드아이 2017. 9. 11.

*** 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

상수화된 멤버 함수에서도 수정을 가능하도록 멤버 변수를 선언한다.