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:
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.
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) ... }
Partager