首页 > 解决方案 > 关于函数中的局部变量(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作为函数参数传递的向量中。
但我完全不确定我在做什么。
功能完成后,我创建的对象会被删除吗?它是函数的局部变量吗?那么向量会保存那个对象吗?

标签: c++local-variables

解决方案


NdHydroAAjouter是一个局部变量,因此它将在函数返回时被破坏。

您将在 中SysHydro->push_back(NdHydroAAjouter);存储一份副本。当你的函数返回时,这个副本仍然存在。NdHydroAAjouterSysHydro

总而言之,您的问题听起来像是XY 问题


推荐阅读