J'aimerais utiliser un objet fils par polymorphisme, donné par une fonction générique (utilisé en virtual).
En gros, je cherche à creer un objet B dans un f(), qui serait utilisé uniquement dans l'instruction appelante.
Mais je ne sais pas si l'objet créé statiquement dans f sera effacé de la mémoire apres l'instruction, ou vraiment à la sortie de f(). Un new reglerais le probleme, mais cela m'oblige soit à passer par des smart-pointer, soit à faire des delete apres l'instruction ce que je ne veux pas faire.
ex:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
A * f() // fonction créant un objet temporaire de type B
{
  B b;    // Creation d'un objet fils en statique
  b.setVal(1); // Initialisation de b
  return &b;  // Que devient b? (1)
}
 
int main()
{
...
   f()->func(); // func est, une fonction virtuelle. Ce serait donc la fonction d'un B ici. 
// Que devient b lors de l'appel de func()? (2)
...
}
Vu que l'on sort de la fonction f() avant l'appel de func(), b est effacé de la mémoire. Ce qui devrait normalement faire cracher le programme en mode debug. Or, j'ai pu constater que non. D'où ma question.