인터뷰에서 다음과 같은 질문을 받았습니다.
아래 코드 조각에서 줄임표 (…)는 공개되지 않은 코드를 나타냅니다.
class X { … }; class Y { public: explicit Y(const X& x); … };
다음 각 문장의 컴파일 및 실행에 대해 무엇을 말할 수 있습니까? 이 코드가 실행될 때 발생하는 각 작업을 설명하십시오.
Y func(Y y) { … }
X x;
Y y = func(Y(x));
나는 질문을 제대로 이해할 수 없었기 때문에 대답 할 수 없었다. 어떤 사람이 내게 기대했던 답을 설명하거나 내가 통과 할 수있는 링크를 공유 할 수 있다면 정말 좋을 것입니다. 많은 감사합니다.
아마도 ...
코드의 컴파일과 실행에 영향을 미칠 수있는 코드가있을 수 있다는 의미일까요?
코드에서 일어나는 일 :
X
기본 ctor가 호출됩니다.func(Y(x))
라고 : Y(x)
ctor에 명시 적에서 Y 객체를 생성하기 위해 호출됩니다 x
.코드 컴파일은 (무엇보다도) X
및 Y
생성자 에 따라 다릅니다 . 예 :
X
코드 컴파일 을 방지 하기 위해 개인 기본 ctor 추가Y
코드 컴파일 을 방지 하기 위해 개인 복사 ctor를 추가합니다 .이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다