const 포인터에 관한 기본적인 질문이 있습니다. const 포인터를 사용하여 non-const 멤버 함수를 호출 할 수 없습니다. 그러나, 나는이 가리키는 const 포인터에이 작업을 수행 할 수 있습니까 : const (T const *)에 대한 포인터 삭제
delete p;
이
은 본질에 const가 아닌 '방법'인 클래스의 소멸자를 호출합니다. 왜 이것이 허용됩니까? 다음을 지원하는 것일뿐입니다.delete this;
또는 다른 이유가 있습니까?
// dynamically create object that cannot be changed
const Foo * f = new Foo;
// use const member functions here
// delete it
delete f;
을하지만 문제는 동적으로 생성하는 개체에 한정되지 않고 :
{
const Foo f;
// use it
} // destructor called here
소멸자 const를 개체를 호출 할 수없는 경우 우리가 사용할 수 CONST 객체를
+1 최근 수정 사항입니다. 나는 이것이 진정한 이유라고 생각한다. const 객체에 대한 자동 소멸자 호출 - delete f와 거의 같습니다. 여기서 f - const의 포인터. – bayda