>  기사  >  백엔드 개발  >  C에서 임시 개체는 언제 삭제됩니까?

C에서 임시 개체는 언제 삭제됩니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-12 17:34:02236검색

When are Temporary Objects Destroyed in C  ?

C의 임시 개체 삭제

C에서는 식을 평가하는 동안 요청에 따라 임시 개체가 생성됩니다. 이러한 개체는 표현식의 범위 내에서만 존재하며 표현식이 끝난 후 자동으로 삭제됩니다.

3개의 코드 줄이 포함된 다음 예를 고려하세요.

Foo foo{"three"};
Foo{"one"};
std::cout << "two" << '\n';

코드는 "one", " 둘', '셋' 순으로요. 이 동작은 임시 개체 삭제를 관리하는 다음 규칙에서 발생합니다.

식 평가 종료 시 삭제

임시 개체는 전체 식 평가가 완료되면 삭제됩니다. 그들은 창조되었습니다. 이 예에서 "1"과 "3"에 대한 임시 개체는 해당 줄이 위치한 후에 삭제됩니다.

규칙 예외

임시 개체 동안 소멸은 일반적으로 이 규칙을 따르며 [class.temporary]에 설명된 대로 특정 예외가 존재합니다. p4-p7:

  1. 배열 이니셜라이저에서 기본으로 생성된 임시 객체의 수명이 단축되었습니다.
  2. 배열 복사 중 기본 생성자 인수의 수명이 단축되었습니다.
  3. 수명이 연장되었습니다. 임시 개체에 대한 참조를 바인딩하여 임시 개체를 만듭니다.
  4. 임시 개체의 수명을 연장합니다. for-range-initializer.

제공된 예에서는 이러한 예외가 적용되지 않으므로 임시 개체는 해당 줄 다음에 삭제되어 지정된 출력이 생성됩니다.

위 내용은 C에서 임시 개체는 언제 삭제됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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