나는 지금이 멤버 함수를 const 선언함으로써, 우리는 클래스 데이터를 수정 자제 컴파일러에게 const 멤버 함수에 대한 Ecekl로 작성이 const 멤버 함수가 정적 멤버 데이터를 수정하는 이유는 무엇입니까?
Class Obj{
static int i,j;
public:
void f() const {cout<<i++<<endl;}
void f() const {cout<<i++<<endl;}
};
int Obj::i=47;
int Obj::j=11;
++ C에서 Eckel-Thining에서 다음 코드 줄을이 . 나는 const와 같은 특정한 경우에이 포인터의 const를 명시 적으로 버림으로써 우리는 그걸 막을 수 있다고 생각하지만 여기서는 둘 다 일어나지 않고 ++와 j ++는 잘 동작한다. 왜 그래야만하지?
정적 멤버는 개체의 일부가 아닙니다. – chris
하지만 수업에 비공개로 선언됩니다. 그것만이 모든 객체에 대해 하나의 고유 한 저장소를 가지고 있다는 것입니다. –
정확히, 그래서 그들은 어떤 물건에도 속하지 않습니다. 객체가 생성되기 전에 존재합니다. – chris