C++:Lors de la création de nouveaux objets à l'intérieur d'une fonction et de le retourner comme résultat, dois-je utiliser l'opérateur new pour créer l'objet?

J'ai deux factice questions qui ont confondu moi pendant un moment. J'ai fait quelques recherches en ligne et de lire beaucoup de tutoriels c++, mais je ne trouve pas de réponses concrètes.

Dire que nous avons une classe nommée Nœud qui est un bloc de construction d'une seule liste liée.

class Node
{
   int data;
   Node* next;
}

Fact1: les variables locales(non statique) seront détruits à la sortie des fonctions correspondantes.

Question1: Comment sur les situations coup:

Node* func()
{ 
    Node n; 
    Node* ptr=&n; 
    return n;
}

Sera le nœud de n être détruit? Ou alors, nous devons utiliser l'opérateur new pour créer un nœud et retourner un pointeur vers une mémoire de masse. Si les deux façons de travailler, ce qui est une meilleure approche?

Question2: Comment écrire un destructeur de la classe de nœud? (Je trouve que des questions similaires sur stackOverflow, mais ces réponses axées sur le destructeur de la liste chaînée. J'ai déjà eu ce partie. Ce que je veux, c'est exactement un destructeur pour une classe de Nœud).

---------------------------------------MERCI À VOUS TOUS! JE L'AI EU------------------------------------

Remercier tous ceux qui m'ont donné des suggestions ou de relever mes erreurs. Je crois que j'ai mes réponses. Ci-dessous une note prise par moi à partir de vos réponses, et que vraiment frapper mes confusions.

  1. C'est pas une bonne pratique pour le retour d'une pile, l'adresse de mémoire à partir d'une fonction puisqu'elle va conduire à des comportements indéfinis.
  2. Retour d'un segment de mémoire est OK, mais nous avons à prendre en charge la destruction des objets.
  3. Une alternative sera de retour un objet, bénéficiant du constructeur de copie.
Le code en question 1 même compiler?
merci pour votre réponse rapide. Je suis à la révision de la programmation en c++ et à cette question il suffit de venir dans ma tête et j'ai juste tapé le code à la volée. Je l'ai juste testé et ça ne compile pas. Une version compilée de code sont en train d'être mis à jour. Toujours les mêmes questions.
il n'est toujours pas compiler. Le type de retour de la fonction est Node* mais vous êtes de retour n qui est un Node

OriginalL'auteur user3367047 | 2014-10-10