>백엔드 개발 >C++ >C 임시 객체는 언제 파기되나요?

C 임시 객체는 언제 파기되나요?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-16 01:53:09929검색

When Are C   Temporary Objects Destroyed?

C에서 임시 개체의 수명 보장

C에서는 표현식이 저장되지 않은 값으로 평가될 때 임시 변수가 생성됩니다. 명명된 변수에서. 주어진 코드에서 임시 StringBuffer 객체는 GetString() 함수 호출 내에서 생성됩니다.

StringBuffer(mystring).Size(MAXLEN)

이 임시 객체에 대한 소멸자가 언제 호출되는지에 대한 질문이 발생합니다.

임시 개체의 수명:

C는 임시 개체의 수명이 생성된 전체 표현의 끝입니다. 전체 표현식은 다른 표현식의 일부가 아닌 가장 바깥쪽 표현식입니다. 이 경우 전체 표현식은 전체 GetString() 함수 호출입니다.

GetString(StringBuffer(mystring).Size(MAXLEN), MAXLEN);

파기 타이밍:

따라서 임시 StringBuffer 객체의 소멸자는 GetString() 함수가 반환되고 값이 평가된 이후 호출됩니다. 이 동작은 12.2 "임시 개체"의 C 표준에 의해 보장됩니다.

식 템플릿의 중요성:

이 평생 보증은 식 템플릿에 매우 중요합니다. 표현식 내의 임시 객체에 대한 참조. 예를 들어 다음 표현식 템플릿은 다음과 같습니다.

e = a + b * c / d

각 임시 개체의 수명은 전체 표현식이 끝날 때까지 연장되므로 각 피연산자에 의해 생성된 임시 개체에 대한 참조를 유지할 수 있습니다.

위 내용은 C 임시 객체는 언제 파기되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.