声明没有变量名的实例c ++

Declaring instance without variable name c++

询问 之后,我尝试了两种不同的 StateConservator 实例声明:

StateConservator cs(*pContainer, pDoc->GetConfiguration());

StateConservator(*pContainer, pDoc->GetConfiguration());

第一个做了我想要的,它只在作用域结束后才传递析构函数。第二个在声明本身的行中传递析构函数。

编译器的行为是否正确?如果这是正确的行为,那么在该行中声明匿名变量的方式是什么?

在 C++ 中不能有 "unnamed" 个对象。在第二种情况下,对象被立即创建和销毁,因为它没有与名称相关联。与名称(例如变量)的关联给出了一个控制其生命周期的对象范围。通过不命名对象,它的生命周期被绑定到语句。如果给它一个名字,那么它就会绑定到声明该名称的范围。