해당 클래스의 두 개체를 할당 할 때 생성자가 호출되는 이유는 무엇입니까?

Zebrafish

너무 혼란스럽고 이것이 명백하다면 미안합니다. 다음에서 내가 틀렸습니까?

 struct MyStruct
    {
       MyStruct(){};
       MyStruct(MyStruct* arg){};
    }

MyStruct (MyStruct * arg) {}; 생성자가 MyStruct에 대한 포인터 하나를 인수로 사용합니까?

내가 이것을 할 때이 생성자 (내 생각에)가 호출된다는 문제가 있기 때문에 :

int main()
{
   MyStruct obj;
   MyStruct* objPtr;
   obj = objPtr;

   return 0;
} 

obj를 objPtr에 할당 할 때 컴파일러가 불평 할 것으로 예상했지만 불평하지 않고 대신 MyStruct (MyStruct * arg); 포인터 인수를 취하는 생성자라고 생각했습니다.

어떤 도움을 주시면 감사하겠습니다. 또한 복사 할당 연산자를 클래스에 추가해도 여전히 발생합니다.

편집 : 답변 주셔서 감사합니다. 이것에 대해 읽을만한 것이 있고 주제는 C ++에서 생성자를 변환하는 것 같습니다. 또한 명시적인 키워드를 추측하고 있습니다. 다음은 그것을 설명하는 SO 질문에 대한 링크입니다.

C ++에서 변환 생성자는 무엇입니까? 그것은 무엇입니까?

StoryTeller-언슬 랜더 모니카
  1. 컴파일러는 할당 연산자를 합성합니다.

    MyStruct& MyStruct::operator=(MyStruct const&) = default;
    
  2. 할당을 볼 때 연산자 후보를 찾습니다 (생성 한 연산자). 그런 다음 생성자를 사용하여 할당 ( MyStruct)을 허용하는 유형으로 변환 할 수 있음을 확인합니다 . 따라서 다음과 같이 요약됩니다.

    obj = MyStruct (objPtr);
    

오류가 발생하는 것을 확인하려면 생성자를 명시 적으로 표시하십시오.

struct MyStruct
{
   MyStruct(){};
   explicit MyStruct(MyStruct* arg){};
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

클래스의 객체에 정수 값을 할당 할 때 매개 변수화 된 생성자가 호출되는 이유는 무엇입니까?

분류에서Dev

할당 자 클래스의 할당 해제 메서드를 호출 할 때 포인터가 null이 될 수없는 이유는 무엇입니까?

분류에서Dev

메서드를 호출하려고 할 때 UICollectionViewDataSource가 할당 해제되는 이유는 무엇입니까?

분류에서Dev

오버로드 된 할당 연산자를 호출 할 때 복사 생성자가 호출되는 이유는 무엇입니까?

분류에서Dev

C ++에서 복사 생성자가 호출되는 경우 다른 개체에 개체를 할당 할 때 호출되지 않습니까?

분류에서Dev

다음 메서드가 두 생성자의 값을 반환해야 할 때 클래스의 다음 메서드를 만드는 방법은 무엇입니까?

분류에서Dev

할당을 사용할 때 스택 변수에 대해 소멸자가 호출되지 않는 이유는 무엇입니까?

분류에서Dev

"new"를 사용하여 Derived 클래스에 메모리를 할당 할 때 Base 생성자를 호출하는 방법은 무엇입니까?

분류에서Dev

소멸자가 호출되지만 개체를 매개 변수로 전달할 때 생성이 호출되지 않는 이유는 무엇입니까?

분류에서Dev

개체에 다른 개체의 값을 할당 한 다음 원래 개체를 다시 할당하면 두 개체가 모두 변경되는 이유는 무엇입니까?

분류에서Dev

Ninject가 Lazy <T> 개체를 주입 할 때 호출되는 Lazy <T> 생성자는 무엇입니까?

분류에서Dev

비 정적 메서드를 호출 할 때 구조체의 정적 생성자가 호출되는 이유는 무엇입니까?

분류에서Dev

객체 초기화에서 할당 연산자에 의해 생성자에 매개 변수를 전달할 수있는 이유는 무엇입니까?

분류에서Dev

파생 클래스가 기본 클래스 생성자를 두 번 호출 할 수있는 이유는 무엇입니까?

분류에서Dev

ARC없이 Xcode에서 스레드를 전환 할 때 내 객체가 자체적으로 할당 해제 된 이유는 무엇입니까?

분류에서Dev

힙에 할당 된 다른 개체에 의해 생성 될 때 개체가 할당되는 위치

분류에서Dev

함수를 호출 할 때 생성자가있는 클래스와없는 클래스의 차이점은 무엇입니까?

분류에서Dev

내 코드가 하나만 요청할 때 valgrind가 두 개의 메모리 할당을보고하는 이유는 무엇입니까?

분류에서Dev

JPEG를 TJPEGImage 배열에 할당 할 때 액세스 위반이 발생하는 이유는 무엇입니까?

분류에서Dev

재 할당이 발생할 때이 개체 복사본이 null이 아닌 이유는 무엇입니까?

분류에서Dev

이 변수 할당에서 두 개체가 참조되는 이유는 무엇입니까?

분류에서Dev

두 개의 분수 객체를 함께 추가 할 때 정수가 누락 된 이유는 무엇입니까?

분류에서Dev

"TermDocumentMatrix"를 사용할 때 "character"클래스의 개체에 적용되는 'meta'에 해당하는 메서드가 없습니다.

분류에서Dev

두 개 이상의 동일한 객체를 연속 상태에 추가 할 때 항상 동일한 키를 생성하는 이유는 무엇입니까?

분류에서Dev

TrimStart가 변수에 다시 텍스트를 할당 할 때만 작동하는 이유는 무엇입니까?

분류에서Dev

vfork ()가 생성 직후 자식 프로세스가 exec () 또는 exit ()를 호출 할 때 사용되는 이유는 무엇입니까?

분류에서Dev

Snowflake에서 두 개의 변수를 동시에 할당 할 때 변수에 256 바이트 제한이있는 이유는 무엇입니까?

분류에서Dev

이유는 무엇입니까이 번호 클래스 할당 작업 (자바)?

분류에서Dev

임시 반환 객체를 참조에 할당 할 때 공용 복사 생성자가 필요한 이유는 무엇입니까?

Related 관련 기사

  1. 1

    클래스의 객체에 정수 값을 할당 할 때 매개 변수화 된 생성자가 호출되는 이유는 무엇입니까?

  2. 2

    할당 자 클래스의 할당 해제 메서드를 호출 할 때 포인터가 null이 될 수없는 이유는 무엇입니까?

  3. 3

    메서드를 호출하려고 할 때 UICollectionViewDataSource가 할당 해제되는 이유는 무엇입니까?

  4. 4

    오버로드 된 할당 연산자를 호출 할 때 복사 생성자가 호출되는 이유는 무엇입니까?

  5. 5

    C ++에서 복사 생성자가 호출되는 경우 다른 개체에 개체를 할당 할 때 호출되지 않습니까?

  6. 6

    다음 메서드가 두 생성자의 값을 반환해야 할 때 클래스의 다음 메서드를 만드는 방법은 무엇입니까?

  7. 7

    할당을 사용할 때 스택 변수에 대해 소멸자가 호출되지 않는 이유는 무엇입니까?

  8. 8

    "new"를 사용하여 Derived 클래스에 메모리를 할당 할 때 Base 생성자를 호출하는 방법은 무엇입니까?

  9. 9

    소멸자가 호출되지만 개체를 매개 변수로 전달할 때 생성이 호출되지 않는 이유는 무엇입니까?

  10. 10

    개체에 다른 개체의 값을 할당 한 다음 원래 개체를 다시 할당하면 두 개체가 모두 변경되는 이유는 무엇입니까?

  11. 11

    Ninject가 Lazy <T> 개체를 주입 할 때 호출되는 Lazy <T> 생성자는 무엇입니까?

  12. 12

    비 정적 메서드를 호출 할 때 구조체의 정적 생성자가 호출되는 이유는 무엇입니까?

  13. 13

    객체 초기화에서 할당 연산자에 의해 생성자에 매개 변수를 전달할 수있는 이유는 무엇입니까?

  14. 14

    파생 클래스가 기본 클래스 생성자를 두 번 호출 할 수있는 이유는 무엇입니까?

  15. 15

    ARC없이 Xcode에서 스레드를 전환 할 때 내 객체가 자체적으로 할당 해제 된 이유는 무엇입니까?

  16. 16

    힙에 할당 된 다른 개체에 의해 생성 될 때 개체가 할당되는 위치

  17. 17

    함수를 호출 할 때 생성자가있는 클래스와없는 클래스의 차이점은 무엇입니까?

  18. 18

    내 코드가 하나만 요청할 때 valgrind가 두 개의 메모리 할당을보고하는 이유는 무엇입니까?

  19. 19

    JPEG를 TJPEGImage 배열에 할당 할 때 액세스 위반이 발생하는 이유는 무엇입니까?

  20. 20

    재 할당이 발생할 때이 개체 복사본이 null이 아닌 이유는 무엇입니까?

  21. 21

    이 변수 할당에서 두 개체가 참조되는 이유는 무엇입니까?

  22. 22

    두 개의 분수 객체를 함께 추가 할 때 정수가 누락 된 이유는 무엇입니까?

  23. 23

    "TermDocumentMatrix"를 사용할 때 "character"클래스의 개체에 적용되는 'meta'에 해당하는 메서드가 없습니다.

  24. 24

    두 개 이상의 동일한 객체를 연속 상태에 추가 할 때 항상 동일한 키를 생성하는 이유는 무엇입니까?

  25. 25

    TrimStart가 변수에 다시 텍스트를 할당 할 때만 작동하는 이유는 무엇입니까?

  26. 26

    vfork ()가 생성 직후 자식 프로세스가 exec () 또는 exit ()를 호출 할 때 사용되는 이유는 무엇입니까?

  27. 27

    Snowflake에서 두 개의 변수를 동시에 할당 할 때 변수에 256 바이트 제한이있는 이유는 무엇입니까?

  28. 28

    이유는 무엇입니까이 번호 클래스 할당 작업 (자바)?

  29. 29

    임시 반환 객체를 참조에 할당 할 때 공용 복사 생성자가 필요한 이유는 무엇입니까?

뜨겁다태그

보관