나는 자동 변수로 사용하는 내 클래스의 사용자를 방지하려는, 그래서 나는 다음과 같은 코드를 작성 :"= default"소멸자와 비어있는 소멸자의 차이점은 무엇입니까?
class A {
private:
~A() = default;
};
int main() {
A a;
}
나는 코드가 컴파일되지 않을 것으로 예상하지만, g ++는 오류없이 컴파일 . 나는에 코드를 변경할 때
그러나 : 이제
class A {
private:
~A(){}
};
int main() {
A a;
}
, g ++ 내 기대대로 ~A()
가 개인이라는 오류가 있습니다.
"= default"소멸자와 비어있는 소멸자의 차이점은 무엇입니까?
gcc의 버전은 무엇입니까? –
예 : [이 소멸자 참조] (http://en.cppreference.com/w/cpp/language/destructor), 차이점은 사용자가 제공 한 소멸자 (비어있는 경우에도)가 * 사소한 것이고 * reference : "사소한 소멸자가있는 객체는 삭제 표현을 필요로하지 않고 단순히 저장 공간을 할당 해제하여 처리 할 수 있습니다." –
귀하의 첫 번째 예제에서 [gcc4.9 및 clang3.5 모두 컴파일을 거부] (http://coliru.stacked-crooked.com/a/41976bc03bc12c79)의 차이는 없습니다. gcc 버전의 버그 여야합니다. – Praetorian