Nice programing

왜 이것이 기본 생성자를 호출합니까?

nicepro 2020. 10. 7. 08:16
반응형

왜 이것이 기본 생성자를 호출합니까?


struct X
{
    X()    { std::cout << "X()\n";    }
    X(int) { std::cout << "X(int)\n"; }
};

const int answer = 42;

int main()
{
    X(answer);
}

이 중 하나를 인쇄 할 것으로 예상했을 것입니다.

  • X(int)때문에 X(answer);에서 캐스트로 해석 될 수 intX, 또는
  • X(answer);변수의 선언으로 해석 될 수 있기 때문 입니다.

그러나 인쇄X()X(answer); 하고 기본 생성자를 호출하는 이유를 모르겠습니다 .

보너스 포인트 : 변수 선언 대신 임시로 변경하려면 무엇을 변경해야합니까?


왜냐하면 X (answer); 변수의 선언으로 해석 될 수 있습니다.

귀하의 답변은 여기에 숨겨져 있습니다. 변수를 선언하면 기본 ctor를 호출합니다 (POD가 아닌 경우 및 모든 항목).

편집시 : 임시를 얻으려면 몇 가지 옵션이 있습니다.


괄호는 선택 사항입니다. 당신이 말한 것은와 동일 X answer;하며 선언문입니다.


X 유형의 변수를 선언하려면 다음과 같이해야합니다.

X y(answer);

참고 URL : https://stackoverflow.com/questions/11691021/why-does-this-call-the-default-constructor

반응형