본문으로 바로가기

(c++) 함수 뒤 const

category 👨🏻‍💻 programming/◽ c, c++ 2024. 6. 27. 16:43
728x90
반응형

" 함수 뒤 const "

 

class Test 
{
    public: 
    void ResizeVector(int num) const
    {
    	vec.resize(num);
    }
    
    private:
    vector<int> vec;
}

 

위에 있는 함수는 컴파일이 될까? 정답은 안된다. 이유는 함수 뒤 const 때문에 vector 내장함수인 resize를 사용할 수 없다.

함수 const에 대해서 간단하게 알아보자.

 

[ 의미 ]

 - 해당 함수에서는 해당 객체의 멤버변수를 변경할 수 없다. 

 - 여기서 이번에 새로 알게 된 사실은 멤버변수에 순차 컨테이너 vector가 있었는데 vector 내장 함수도 제한 받는다는 것이다.

어찌보면 당연한거지만 ...? 컴파일 전에 오류메시지를 뱉는게 신기했다.

"개체에 일치를 방해하는 형식 한정자가 있음." 이렇게 오류가 뜬다. 

 -  제한되는 함수는 아래와 같다. push_back, assign, resize, emplace, emplace_back, insert, pop_back, reserve, swap 등.

 

 

[ 조건 ]

함수에 const 키워드를 삽입 할 수 있는 조건은 클래스 멤버에 한정된다. (struct도 붙일 수 있다.)

728x90
반응형