출력 질문
조회수 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 답변
-
보이시는 그대로 처음
myclass a
를 하게 되면 기본 생성자인myclass()
가 호출되고 a가 출력됩니다.그 다음
myclass b(a)
를 하게 되면 myclass 객체를 레퍼런스 파라미터로 받는myclass(myclass& r)
생성자가 호출되고 b가 출력됩니다.마지막으로
myclass m=a
를 하게 되면 복사 대입연산자를 호출한다고 착각하신 것 같은데 생성시기이기 때문에 2번째 생성자를 호출하게 되서 b가 출력됩니다.-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력