gpt4 book ai didi

c++ - for 循环中的对象作用域和生命周期

转载 作者:行者123 更新时间:2023-11-28 02:16:45 25 4
gpt4 key购买 nike

假设我有以下代码。

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 到 4 时是否超出范围?那就是析构函数会在这里被调用 5 次还是只调用一次?

最佳答案

构造函数和析构函数被调用了 5 次,对吧。

因为控制流跨越了 5 次 cat 的初始化,以及 5 次其范围的结束(循环 block 的结束 '}')。

实际上,您在最外面的大括号中看到的实际上是在循环条件 (i < 5) 为真时重复的一个复合语句。

关于c++ - for 循环中的对象作用域和生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33825590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com