c++ - 什么决定了 C++ 中何时为临时对象调用析构函数?

标签 c++ reference

我几天前问过的人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/

相关文章:

c++ - C++ 并发中的内存可见性(无数据竞争)

c++ - 为什么派生*到基*之间的转换会因私有(private)继承而失败?

c++ - 返回 vector 元素的拷贝与返回指向 vector 元素的指针

c++ - 右值、左值和正式定义

c++ - 在 const 成员函数中返回 C++ 引用

c++ - 实现动态创建的类对象数组(C++)

c++ - protected 成员的默认值 C++

c# - 在 C# 中的 Sitcone 在 etc 中找不到

python - 私有(private)变量和类局部引用

c++ - 收到意外的输出