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

时间:2015-03-20 11:07:33

标签: c++ constructor anonymous variable-declaration

在询问C++ Error linking in consumer file caused by static data field之后,我为StateConservator的一个实例尝试了两种不同的声明:

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

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

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

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

1 个答案:

答案 0 :(得分:6)

您不能在C ++中拥有“未命名”对象。在第二种情况下,对象即时创建和销毁,因为它与名称无关。与名称(例如,变量)的关联给出了控制其寿命的对象范围。通过不命名对象,它的生命周期与语句绑定。如果给它一个名称,那么它将被绑定到声明名称的范围。