struct foo_base
{
explicit foo_base(int i) : i(i) {}
foo_base() = delete;
virtual ~foo_base() = default;
int i;
}
내 클래스는 리소스를 관리하지 않지만 다형성 사용이기 때문에 가상 소멸자를 선언했습니다. 이 방법을 이해하는 한 이동 생성자를 삭제하고 assig.operator를 이동했습니다. 이렇게 유지해도 괜찮습니다. 그렇지 않으면 이동 생성자를 만들고 assig.operator를 기본값으로 이동하는 것이 더 안전하거나 정확할까요?
이 방법을 이해하는 한 이동 생성자를 삭제하고 assig.operator를 이동했습니다.
옳은.
그러나 복사 생성자와 할당 연산자는 암시 적으로 생성되므로 클래스는 MoveConstructible 및 MoveAssignable입니다.
이렇게 유지해도 괜찮습니다. 그렇지 않으면 이동 생성자를 만들고 assig.operator를 기본값으로 이동하는 것이 더 안전하거나 정확할까요?
안전 측면에서 거의 차이가 없습니다. 베이스에 효율적으로 이동 가능한 멤버 (예 : 벡터) 또는 복사 불가능한 멤버가있는 멤버가있는 경우에 유용합니다. 그러나 foo_base
그것들은 없습니다.
명시 적으로 기본값을 지정하지 않고 클래스를 더 단순하게 유지하는 것이 좋습니다. 같은 이유로 기본 생성자를 명시 적으로 삭제하지 않는 것이 더 나을 수 있습니다. 이는 어쨌든 암시 적으로 삭제 될 필요가 없습니다.
명시 성 또는 노이즈 감소를 선택해야하는지 여부는 의견에 따라 크게 달라집니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다