c++ - 关于函数中的局部变量(c++)
问题描述
这是我的代码:
void AjoutNoeudHydro(vector< NoeudHydro<PTNoeud> >* SysHydro,
PTNoeud NdSR,
char typeNd, int temps, int TabEqui[])
{
NoeudHydro<PTNoeud> NdHydroAAjouter(NdSR,SysHydro->size(),typeNd,temps);
//Relation Pere-Fils
NdHydroAAjouter.SetPere(SysHydro->at(TabEqui[NdSR->prec->num]));
SysHydro->at(TabEqui[NdSR->prec->num]).SetFils(NdHydroAAjouter);
//Equivalences
TabEqui[NdSR->num]=NdHydroAAjouter.GetNumero();
//Ajout dans le vecteur
SysHydro->push_back(NdHydroAAjouter);
// delete NdHydroAAjouter;
}
我实际上做的是创建一个新的 type 对象NoeudHydro<PTNoeud>
,做一些调整,并将其添加到SysHydro
作为函数参数传递的向量中。
但我完全不确定我在做什么。
功能完成后,我创建的对象会被删除吗?它是函数的局部变量吗?那么向量会保存那个对象吗?
解决方案
NdHydroAAjouter
是一个局部变量,因此它将在函数返回时被破坏。
您将在 中SysHydro->push_back(NdHydroAAjouter);
存储一份副本。当你的函数返回时,这个副本仍然存在。NdHydroAAjouter
SysHydro
总而言之,您的问题听起来像是XY 问题。
推荐阅读
- c# - How to create a json with mixed type matrix in c#
- java - 如何将自定义视图与其他 UI 组件一起使用?
- javascript - XMLHttpRequest() 不从我的 node.js/express 呈现视图?
- ruby-on-rails - 在 Rails 中使用 escape_javascript 渲染部分时出错?
- arm - 如何通过UART读取firmware.bin文件?
- html - 将鼠标悬停在带有框阴影和过渡的项目上会导致溢出问题
- python - 在 django 中提交表单时出现值错误
- c# - 如何在 WinForms C# 中制作自定义 DataGridView 单元格
- swift - 在 Swift 中生成 MS docx 文件
- python - 分析多个“avro”文件的最佳方法是什么?