ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C++] const
    C++ 2023. 4. 12. 00:19

     


    [const 변수]

     

    변수에 const가 보이면

     

    runtime 전에 초기화하는구나

    만 생각하자

     

    상수화 보단 위에꺼를 떠올리자 더 직관적이다

    상수화는 나한테 너무 추상적 ㅇㅇ

     

    runtime 전에 초기화되어야하므로 (compile time에 초기화)

    선언과 동시에 초기화 해야하고

    "상수화" 이므로 runtime 때 수정이 불가능하다!

     

    이렇게 이해하면됨

     

    결론적으로,

     

    만약 어떤 객체나 변수가 불변이여야하면 const 선언을 해주고

    프로그램 시작 전에 다 초기화가 되어 자기값을 갖게 만들어 놓는 것이고,

     

    runtime때 초기화가 필요하거나 수정이 필요한 녀석은 무조건 const 는 아니다

     

    라는 결론을 내릴 수 있다

     

    class MyMath {
    public:
    	static const double PI; // const 붙여준 이유
    	static int add(int a, int b) { return a + b; }
    	static int multiply(int a, int b) { return a * b; }
    	static float circleArea(double r) { return PI * r * r; }
    };
    
    const double MyMath::PI = 3.141592; // 바꾸지 못하게 하려고

     


    [const function]

     

    해당 객체의 데이터 변경을 허용하지 않는 함수

     

    int GetX() const;
    int GetY() const;
    void ShowInfo() const;

     

    1. const 함수는 함수 선언부 뒤에 붙는다

     

    2. const 함수는 const 함수만 호출이 가능하다!

     

    const 아닌 함수에 대해서는 호출이 제한된다!

    멤버변수를 변경가능한 함수호출을 아예 막아놓은 것이다

     

    3. const 선언은 함수 오버로딩의 조건에 해당된다

     


    [const 객체]

     

    const 객체는 상수객체이다.

    즉, 한번 생성되었으면 이제 멤버변수를 못바꾼다

     

    const 객체는 const 함수만 호출가능하다!

     


    [const 위치에 따른 해석]

     

    'C++' 카테고리의 다른 글

    [C++] 반환형 참조형 (return값이 참조형일때)  (0) 2023.04.15
    [C++] MyString 클래스 실습  (0) 2023.04.13
    [C++] 접근지정자 (access modifiers)  (3) 2023.04.11
    [C++] friend  (2) 2023.04.11
    [C++] static  (0) 2023.04.06