생성자 이동 및 할당 이동. 기본 클래스의 연산자

user11278099
struct foo_base
{
    explicit foo_base(int i) : i(i) {}
    foo_base() = delete;
    virtual ~foo_base() = default;
    int i;
}

내 클래스는 리소스를 관리하지 않지만 다형성 사용이기 때문에 가상 소멸자를 선언했습니다. 이 방법을 이해하는 한 이동 생성자를 삭제하고 assig.operator를 이동했습니다. 이렇게 유지해도 괜찮습니다. 그렇지 않으면 이동 생성자를 만들고 assig.operator를 기본값으로 이동하는 것이 더 안전하거나 정확할까요?

Eerorika

이 방법을 이해하는 한 이동 생성자를 삭제하고 assig.operator를 이동했습니다.

옳은.

그러나 복사 생성자와 할당 연산자는 암시 적으로 생성되므로 클래스는 MoveConstructible 및 MoveAssignable입니다.

이렇게 유지해도 괜찮습니다. 그렇지 않으면 이동 생성자를 만들고 assig.operator를 기본값으로 이동하는 것이 더 안전하거나 정확할까요?

안전 측면에서 거의 차이가 없습니다. 베이스에 효율적으로 이동 가능한 멤버 (예 : 벡터) 또는 복사 불가능한 멤버가있는 멤버가있는 경우에 유용합니다. 그러나 foo_base그것들은 없습니다.

명시 적으로 기본값을 지정하지 않고 클래스를 더 단순하게 유지하는 것이 좋습니다. 같은 이유로 기본 생성자를 명시 적으로 삭제하지 않는 것이 더 나을 수 있습니다. 이는 어쨌든 암시 적으로 삭제 될 필요가 없습니다.

명시 성 또는 노이즈 감소를 선택해야하는지 여부는 의견에 따라 크게 달라집니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

생성자 이동 및 클래스에 대한 할당 연산자 이동

분류에서Dev

암시 적 이동 생성자 및 할당 연산자

분류에서Dev

기본 C ++ 복사 및 이동 생성자 및 할당 연산자를 삭제하는 단점이 있습니까?

분류에서Dev

데이터 멤버, 생성자 및 연산자가 오버로드 된 추상 기본 클래스

분류에서Dev

다른 클래스의 이동 생성자 내부에서 이동 클래스 (기본 생성자 없음)

분류에서Dev

C ++-사용자 지정 스왑 기능없이 할당 연산자 이동?

분류에서Dev

누군가 기본 이동 생성자를 생성하지만 이동 할당 연산자를 삭제해야하는 이유는 무엇입니까?

분류에서Dev

파생 클래스에서 복사 생성자 및 할당 연산자 만들기

분류에서Dev

상수 멤버로 클래스의 구성 및 할당 이동

분류에서Dev

기본 이동 생성자

분류에서Dev

이동 생성자 대 이동 할당

분류에서Dev

자바 스크립트 할당 연산자 이상한 동작

분류에서Dev

기본 클래스의 기본 소멸자는 멤버가있는 경우 자식 클래스의 이동 생성자를 비활성화합니다.

분류에서Dev

unique_ptr <>로 이동 생성자 및 할당 구현

분류에서Dev

이해 '| '및'& '연산자 동작 (R의 논리 연산자)

분류에서Dev

동적 바인딩이있는 클래스에 대한 이동 할당 연산자

분류에서Dev

Android의 Kotlin에서 활동 클래스에 대한 기본 생성자를 작성할 수 없습니다.

분류에서Dev

할당 연산자 템플릿 및 C ++의 복사 생성자

분류에서Dev

이동 생성자 측면에서 복사 할당 연산자 구현

분류에서Dev

기본 및 파생 클래스의 생성자

분류에서Dev

파생 템플릿 클래스에 대한 기본 클래스 포인터를 포함하는 클래스에 대한 할당 연산자 및 복사 생성자

분류에서Dev

파생 클래스를 선언하는 동안 기본 클래스의 생성자가 호출됩니다.

분류에서Dev

기본 이동 생성자 정의 이해

분류에서Dev

C ++는 순수 가상 클래스에 대해 기본 "생성자 / 소멸자 / 복사 생성자 / 복사 할당 연산자"를 생성합니까?

분류에서Dev

생성자 인수가 다른 동일한 클래스의 빈 2 개 생성 및 자동 연결 사용

분류에서Dev

C ++ 클래스로 자동차 이동 및 거리 계산

분류에서Dev

Rails 3.2 + Paperclip : 사용자 생성시 기본 이미지 할당

분류에서Dev

모든 기본 인수가있는 명시 적 생성자는 동일한 클래스의 다른 생성자에서 호출 할 수 없습니다.

분류에서Dev

Python-상속 된 클래스의 기본 클래스 속성 (별칭) 자동 업데이트

Related 관련 기사

  1. 1

    생성자 이동 및 클래스에 대한 할당 연산자 이동

  2. 2

    암시 적 이동 생성자 및 할당 연산자

  3. 3

    기본 C ++ 복사 및 이동 생성자 및 할당 연산자를 삭제하는 단점이 있습니까?

  4. 4

    데이터 멤버, 생성자 및 연산자가 오버로드 된 추상 기본 클래스

  5. 5

    다른 클래스의 이동 생성자 내부에서 이동 클래스 (기본 생성자 없음)

  6. 6

    C ++-사용자 지정 스왑 기능없이 할당 연산자 이동?

  7. 7

    누군가 기본 이동 생성자를 생성하지만 이동 할당 연산자를 삭제해야하는 이유는 무엇입니까?

  8. 8

    파생 클래스에서 복사 생성자 및 할당 연산자 만들기

  9. 9

    상수 멤버로 클래스의 구성 및 할당 이동

  10. 10

    기본 이동 생성자

  11. 11

    이동 생성자 대 이동 할당

  12. 12

    자바 스크립트 할당 연산자 이상한 동작

  13. 13

    기본 클래스의 기본 소멸자는 멤버가있는 경우 자식 클래스의 이동 생성자를 비활성화합니다.

  14. 14

    unique_ptr <>로 이동 생성자 및 할당 구현

  15. 15

    이해 '| '및'& '연산자 동작 (R의 논리 연산자)

  16. 16

    동적 바인딩이있는 클래스에 대한 이동 할당 연산자

  17. 17

    Android의 Kotlin에서 활동 클래스에 대한 기본 생성자를 작성할 수 없습니다.

  18. 18

    할당 연산자 템플릿 및 C ++의 복사 생성자

  19. 19

    이동 생성자 측면에서 복사 할당 연산자 구현

  20. 20

    기본 및 파생 클래스의 생성자

  21. 21

    파생 템플릿 클래스에 대한 기본 클래스 포인터를 포함하는 클래스에 대한 할당 연산자 및 복사 생성자

  22. 22

    파생 클래스를 선언하는 동안 기본 클래스의 생성자가 호출됩니다.

  23. 23

    기본 이동 생성자 정의 이해

  24. 24

    C ++는 순수 가상 클래스에 대해 기본 "생성자 / 소멸자 / 복사 생성자 / 복사 할당 연산자"를 생성합니까?

  25. 25

    생성자 인수가 다른 동일한 클래스의 빈 2 개 생성 및 자동 연결 사용

  26. 26

    C ++ 클래스로 자동차 이동 및 거리 계산

  27. 27

    Rails 3.2 + Paperclip : 사용자 생성시 기본 이미지 할당

  28. 28

    모든 기본 인수가있는 명시 적 생성자는 동일한 클래스의 다른 생성자에서 호출 할 수 없습니다.

  29. 29

    Python-상속 된 클래스의 기본 클래스 속성 (별칭) 자동 업데이트

뜨겁다태그

보관