C++ friend와 static 그리고 const

‍정진철·2022년 9월 10일
0

C++

목록 보기
13/18

const

class SoSimple
{
private:
    int num;

public:
    SoSimple(int n) : num(n)
    {
    }

    SoSimple &AddNum(int n)
    {
        num += n;
        return *this;
    }

    void SimpleFunc()
    {
        cout << "SimpleFunc: " << num << endl;
    }

    void SimpleFunc() const
    {
        cout << "const SimpleFunc: " << num << endl;
    }

    //참조자로 obj가 선언됬으므로 SoSimple의 무슨 객체든 인자로 받을 수 있음.
    void YourFunc(const SoSimple &obj)
    {
        obj.SimpleFunc();
    }
    int main(void)
    {   
        // void SimpleFunc 실행
        SoSimple obj1(2);
        
        // void SimpleFunc() const 실행
        const SoSimple obj2(7);

        //void SimpleFunc() 실행
        obj1.SimpleFunc();

        // void SimpleFunc() const 실행
        obj2.SimpleFunc();

        YourFunc(obj1);
        YourFunc(obj2);
        return 0;
    }
}

  • const 객체를 대상으로 멤버 함수를 오출하면 const 멤버 함수가 호출되며 일반 객체를 대상으로 함수 호출하면 일반 멤버함수가 호출된다.

  • void YourFunc(const SoSimple &obj) 와 같이 const 참조자로 매게변수를 받으므로 참조자를 이용한 obj.SimpleFunc(); 수행시 void SimpleFunc() const가 실행된다.

profile
WILL is ALL

0개의 댓글