关于函数中的局部变量(C++)

问题描述 投票:1回答:1

这是我的代码。

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;
}

我实际要做的是,创建一个新的对象,类型为 NoeudHydro<PTNoeud>,做了一些调整,并将其添加到矢量中。SysHydro 作为函数的参数传递。但我完全不知道自己在做什么。当函数完成后,我创建的对象会被删除,对吗?它是函数的一个局部变量?那么向量是否会保存这个对象?

c++ local-variables
1个回答
0
投票

NdHydroAAjouter 是一个局部变量,当函数返回时,它将被销毁。

你的 "NdHydroAAjouter(NdSR,...) "是一个局部变量,当函数返回时,它将被销毁。SysHydro->push_back(NdHydroAAjouter); 将存储一份 NdHydroAAjouterSysHydro. 当你的函数返回时,这个副本仍然会存在。

总而言之,你的问题听起来像是一个 XY问题.

© www.soinside.com 2019 - 2024. All rights reserved.