अवलोकन योग्य व्यवहार यह है कि इसे प्रत्येक पुनरावृत्ति कहा जाता है।
हालांकि अनुकूलन के बारे में सामान्य नियम अभी भी लागू होते हैं। संकलक चालाक है और वस्तु सरल तो संकलक कुछ भी कर सकते यह पसंद करती है कि अभी भी सही व्यवहार, उदा .:
#include <iostream>
struct foo {
int i;
foo() : i (-1) {}
~foo() { i = 1; }
};
int main() {
int i = 10;
while (--i) {
foo f;
std::cout << f.i;
}
}
को संकलित करता है पैदा करता है, तो:
.Ltmp5:
.cfi_def_cfa_register %rbp
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
movl $_ZSt4cout, %edi
movl $-1, %esi
callq _ZNSolsEi
xorl %eax, %eax
popq %rbp
ret
अर्थात अनियंत्रित और वहां उस विनाशक का कोई संकेत नहीं है (हालांकि देखने योग्य व्यवहार अभी भी वही है)।
[लूप के भीतर घोषणा के जीवनकाल] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/3768662/lifetime-of-declaration-within-a-loop) –