о локальных переменных в функции (c ++) - PullRequest
0 голосов
/ 08 мая 2020

Вот мой код:

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, который передается как аргумент функции.
Но я абсолютно не уверен в том, что делаю.
Когда функция завершена, созданный мной объект стирается, верно? Это переменная локальная функции? Так спасет ли вектор этот объект?

1 Ответ

0 голосов
/ 08 мая 2020

NdHydroAAjouter - это локальная переменная, и она будет уничтожена при возврате функции.

Ваш SysHydro->push_back(NdHydroAAjouter); сохранит копию NdHydroAAjouter в SysHydro. Эта копия все еще будет существовать, когда ваша функция вернется.

В целом ваш вопрос звучит как проблема XY .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...