2012-04-08 3 views
0

나는 const 함수를 확장했으며 const 함수가 호출 될 때마다 맵을 만들어야했습니다. 마찬가지로힙에서 재 할당을 피하면서 const를 존중하는 경우

int foo() const { 
    map<int, int> bar; 
    // setup bar 
    ... 

    return utility::eval(bar); 
} 

그러나 표시 줄은 매우 비쌉니다. bar를 인스턴스 변수로 선언함으로써 CPU 사용 공간을 절반으로 줄일 수 있지만 이렇게하면 constess를 존중하지 않습니다. 두 세계의 장점을 최대한 활용할 수있는 해커가 아닌 방법이 있습니까?

+0

가장 좋은 것은 'eval' 함수가 더 현명한 인터페이스를 갖도록 수정하는 것입니다. –

답변

2

mutable 멤버 변수로 정의 할 수 있습니다.

const 코너로 자신을 설계 한 상황에서 해로운 해결 방법으로 mutable을 사용하면 안됩니다. 변수를 수정해도 클래스의 논리 상태가 변경되지 않는 경우에만 사용해야합니다 (즉, 멤버 함수가 생성하는 결과에 대한 관찰 가능한 영향이 없음). 네가 그런 상황 같아서 괜찮을거야.