필자가 아는 한, 가상 함수가 있지만 비상 가상 소멸자가있는 클래스를 정의하는 것은 항상 실수 (또는 최소한 문제를 요구한다)이다.다형성 클래스의 암시 적 소멸자를 가상으로 만들 수 있습니까?
이와 같이 (새로 작성한 "제로 규칙"에 대해 생각하면) 내게 암시 적으로 생성 된 소멸자는 적어도 하나의 다른 가상 함수가있는 클래스의 경우 가상으로 있어야합니다.
향후 버전의 C++ 표준에서이를 위임 할 수 있습니까? 또는 다른 방법으로 말하면, 다형성 클래스에서 기본 소멸자를 가상이 아닌 것으로 유지하는 좋은 이유가 있습니까?
편집 : 그냥 난 단지 당신이 소멸자를 작성하지 할 경우에 일어날 일에 제안하고있어, 그것을 명확하게하기 - 당신이 직접 작성 할 경우 가상의 여부를 선택할 수 물론, 당신을 또는 아닙니다. 나는 단지 일반적인 경우 (더 많은 고급 사용법을 막지 않고)에 일치하는 기본값을보고 싶다.
기본 클래스에 대한 포인터에서 개체를 항상 삭제하지는 않습니다. 실제로 다형 적으로 사용하더라도 항상 동적으로 할당하지는 않습니다. – juanchopanza
가상 함수가있는 클래스에 대해 암시 적으로 생성 된 소멸자가 없습니다. – ThomasMcLeod
@ juanchopanza 물론 아닙니다. 그러나 만약 당신이 하나의 가상 함수를 가지고 있다면 어쨌든 vtable에 돈을 내고있는 것입니다 : 가상 소멸자에 대한 추가 비용은 얼마입니까? 가상 함수 오버 헤드는'delete'의 비용 옆에 무시할 수 있습니다. 나는 생각했을 것입니다. –