我几天前问过的人a question 并没有真正的时间来检查它并考虑它,但现在我已经尝试了其中一种解决方案,但我不明白为什么它有效?我的意思是为什么在行尾这样调用析构函数:
#include "stdafx.h"
#include "coutn.h"
#define coutn coutn()
int _tmain(int argc, _TCHAR* argv[])
{
coutn << "Line one " << 1;//WHY DTOR IS CALLED HERE
coutn << "Line two " << " and some text.";
return 0;
}
我假设它与对象的生命周期有关,但我不确定是什么以及如何。正如我所想,创建了两个未命名的对象,但它们没有超出范围,所以我不明白为什么调用 dtor。
谢谢。
最佳答案
coutn()
创建一个临时对象,它将在下一个序列点(在本例中为行尾)销毁。
关于c++ - 什么决定了 C++ 中何时为临时对象调用析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060157/