출력 질문

조회수 590회
#include <stdio.h>


class myclass 
{
public:

    myclass() { printf("a"); }
    myclass(myclass& r)  { printf("b"); }
    void operator = (myclass& r){ printf("c"); } 

};

int main()
{
    myclass a;
    myclass b(a);
    myclass m = a;
    return 0;
}

문제를 풀고 있었는데 잘 몰라서 질문을 올립니다. 이 코드를 실행시켜보면 abb순으로 출력이 되는데

그 과정과 위의 코드들이 언제 호출되는지에 대한 자세한 설명좀 부탁드립니다.

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    보이시는 그대로 처음 myclass a를 하게 되면 기본 생성자인 myclass()가 호출되고 a가 출력됩니다.

    그 다음 myclass b(a)를 하게 되면 myclass 객체를 레퍼런스 파라미터로 받는 myclass(myclass& r) 생성자가 호출되고 b가 출력됩니다.

    마지막으로 myclass m=a를 하게 되면 복사 대입연산자를 호출한다고 착각하신 것 같은데 생성시기이기 때문에 2번째 생성자를 호출하게 되서 b가 출력됩니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)