#include "stdio.h"
class C {
public:
~C() { printf("~C\n"); }
};
int I(const C& c) { printf("I\n"); return 0; }
void V(int i) { printf("V\n"); }
int main() {
V(I(C()));
return 0;
}
출력 신 :개체 수명과 관련하여 정의되지 않은 동작이 실행됩니까?
내가 기대 한 것이 무엇I
V
~C
:
I
~C
V
왜 그렇게 생각하십니까? I()가 const C &를 반환하면 어떻게됩니까? 임시의 수명은 최소한 그것이 포함 된 표현의 지속 시간이어야합니다. – mcmcc
@mcmcc :'C()'가 내장 된 표현식은'I (C())'입니다. 전체 행은 표현식 * 문 *입니다. – BCS
업데이트 된 답변보기 이제 완전히 맞습니다. – Nawaz