C의 임시 객체 소멸
C의 임시 객체는 언제 소멸되나요? 이 질문은 다음 코드 조각을 고려할 때 발생합니다.
#include <iostream> struct Foo { const char* m_name; ~Foo() { std::cout << m_name << '\n'; } }; int main() { Foo foo{"three"}; Foo{"one"}; // unnamed object std::cout << "two" << '\n'; }
코드는 "1", "2" 및 "3"을 인쇄합니다. 임시 개체가 생성 직후 삭제된 경우 이 동작은 예상치 못한 것처럼 보일 수 있습니다. 그러나 그렇지 않습니다.
[class.temporary] p4에 정의된 임시 개체는 생성된 지점을 포함하는 전체 표현식이 끝나면 소멸됩니다. 위의 예에서 전체 표현식은 전체 주요 함수이므로 임시 Foo 객체는 세미콜론에서 삭제됩니다.
이 동작은 표준으로 보장되어 C 컴파일러 전체에서 주어진 코드의 출력이 일관되게 됩니다. 그러나 일반 규칙에는 몇 가지 예외가 있습니다.
위 내용은 C의 임시 개체는 언제 삭제되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!