소멸자가 보호되는 경우 왜 스택에 객체를 할당 할 수 없지만 힙에 할당 할 수 있습니까? 당신이 자동 저장 기간 (당신이 "스택에"라고 부릅니다의 표준 용어)와 객체를 만들 때힙 대 스택에서 소멸자가 객체 할당을 보호
class Foo
{
public:
Foo()
{
}
protected:
~Foo()
{
}
};
int main()
{
Foo* objOnHeap = new Foo(); // compiles fine
Foo objOnStack; // complains that the destructor is protected
return 0;
}
당신이 delete''에 의해 그것을 파괴하지 않는 때문에는 dtor는 전혀 호출되지 않습니다. – songyuanyao
힙에있는 객체에 대해'delete'를 호출하지 않았습니다. 스택에있는 객체의 경우 범위를 벗어나면 삭제됩니다. – arunmoezhi
예. 이것이 차이점입니다. dtor가 호출되는지 여부. (암시 적으로 또는 명시 적으로 중요하지 않음) – songyuanyao