c++ - 这是 C++ 中的有效删除操作吗?

标签 c++ pointers reference

我有一个 vector<some_struct&> array在我的代码中,每当我想向 vector 中添加一些对象时,我都会使用 array.push_back(*new some_struct) .现在我想知道是否应该在清除数组(使用 delete &array[i])之前删除数组中的每个对象?

最佳答案

vector<some_struct&> array无效,句号。

用于实例化标准库容器的类型必须是对象类型。引用类型(如 some_struct& )不是对象类型。

根据定义,“容器是存储其他对象的对象”(来自 C++03 和 C++0x 中的 §23.1/1)。引用不是对象。

如果您使用不满足容器强加的要求的类型实例化容器,则行为是未定义的:您的代码可能会编译也可能不会编译,如果编译了,谁知道结果会是什么;任何事情都可能发生..

关于c++ - 这是 C++ 中的有效删除操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7115988/

相关文章:

c++ - std::condition_variable::wait_until 相对于 std::this_thread::sleep_for 有什么优势吗?

c - 如何更新结构/记录数据库

php - 为什么正常的对象实例化和通过引用的对象实例化之间存在差异?

java - 使用节点数组的 this$10 树

c# - 实在看不懂C#的引用

c++ - 初始化用户定义的 vector vector

c++ - 如何将 2 个 char* 数组直接映射到 std::map<std::string,std::string>

c++ - Qt 单个应用程序文件打开

c++ - 与返回指针相比,返回地址是否有任何有用的应用?

char 数组保存最后一个元素