假设我有以下代码。
vector<Cat> v; \\Cat is a class
for (int i = 0; i < 5; i++)
{
Cat cat1;
if (someFunction(i))
{
cat1.setName("Whiskers");
v.push_back(whiskers) ;
}
}
我的问题是,在for循环中,对象cat1在执行0 to 4
时是否超出范围?那个析构函数会在这里被调用5次还是只调用一次?
答案 0 :(得分:2)
构造函数和析构函数被调用5次,正确。
因为控制流量超过cat
初始化的5倍,并且是其范围结束的5倍(循环块的关闭&#39;}&#39;)
实际上,你在最外面的大括号中看到的实际上是在循环条件(i&lt; 5)为真时重复的一个复合语句。