在 C 领域,向量作为动态内存管理的强大工具占据着至高无上的地位。然而,当涉及到在向量中存储引用时,可能会出现令人费解的错误。
考虑以下代码片段:
std::vector<int> hello;
此代码可以无缝编译,允许您创建一个向量整数。但是,当我们尝试使用引用时会发生什么?
std::vector<int &> hello;
编译器爆发错误,大喊:“指向引用的指针是非法的。”这种奇怪的行为源于 C 中引用的基本性质。引用一旦初始化,就保持不可变,并在其整个生命周期内绑定到各自的引用对象。严格禁止为引用分配新值。
不幸的是,这种不变性与向量等容器的本质相冲突。容器要求其组件可分配,以确保正确的内存管理和修改功能。由于引用缺乏这种可分配性,因此它们作为向量组件是不兼容的。
因此,在向量中存储引用的唯一可行选择是使用指针,它提供了随时间推移指向不同对象所需的灵活性。
以上是为什么我不能在 C 向量中使用引用?的详细内容。更多信息请关注PHP中文网其他相关文章!