gpt4 book ai didi

C++ - 对象在超出范围和 vector 时被破坏

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

为什么当对象超出作用域和在 vector 中时调用对象的析构函数?例如:

std::vector<Foo> vec;
for (i=10; i<10; i++)
{
Foo object(i);
vec.push_back(object);
}

对象的析构函数是否因为每次都超出范围而被调用?我可以在没有指针或 shared_pointers 的情况下让它工作吗?

最佳答案

  • push_back 将对象的拷贝推送到 vector
  • 对象实际上将被销毁,但拷贝将保留在 vector 中
  • 如果您想将对象的确切内容推送到 vector 中并让代码正常工作,请使用移动构造函数

关于C++ - 对象在超出范围和 vector 时被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40197319/

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