将在堆栈上声明的元素添加到静态数组

Adding an element that is declared on the stack to a static array

本文关键字:添加 静态 数组 元素 堆栈 声明      更新时间:2023-10-16

假设我有一个被声明为静态的std::vector。我可以将对象添加到向量中,这些对象是在调用函数的堆栈上本地声明的,而不会产生影响吗?

根据我的理解,向量将其元素存储在堆上。意思是如果我告诉向量像这样移动元素

myvector.push_back(std::move(element));

它将存储在堆上,并且其可见性将保持不变,对吗?

编辑:我想避免复制对象,因为它管理其他资源。

我说的对吗?或者这能更容易完成吗?

通常可以通过从具有自动或静态存储的对象复制来复制具有动态存储的初始化对象,反之亦然。是否通过移动复制对象并不重要。

理论上,有些类只有在以某种方式分配时才可以正常工作,但这些类应该变得不可复制以防止出现问题。