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 중국어 웹사이트의 기타 관련 기사를 참조하세요!