IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Différence entre MaClasse m; et new MaClasse?


Sujet :

C++

  1. #1
    Membre actif Avatar de Jean_Benoit
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 499
    Points : 234
    Points
    234
    Par défaut Différence entre MaClasse m; et new MaClasse?
    Bonjour,

    Quelle différence y-a-t-il entre:
    class MaClasse{
    ..
    ..};
    ..
    int main(){
    MaClasse mc();
    ..
    }

    et

    int main(){
    MaClasse *pmc = new MaClasse;
    ..
    }
    ?
    Je dis ça parceque je dois utiliser delete aprés avoir renseigné un vecteur string, je pourrais aussi appeler le ~destructor?

    Désolé pour la prise de tête.

    Merci si vous avez la réponse

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Y'en a un qui est sur la mémoire automatique et dont la durée de vie est automatiquement gérée par la portée et l'autre qui est sur la mémoire libre et que tu dois explicitement libérer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main()
    {
        MaClasse mc();
    }
    va donner une erreur de compilation un peu plus tard : le compilateur interprète cette instruction comme la déclaration d'une fonction nommée mc, ne prenant aucun argument et retournant un objet de type MaClasse. Il faut écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int main()
    {
        MaClasse mc;
    }
    En utilisant ce type d'écriture, l'objet mc est détruit à la fin du bloc dans lequel il est déclaré. En faisant un new, l'objet n'est détruit que si delete est appelé.

    Dans aucun de ces deux cas un appel explicite au destructeur est nécessaire. D'ailleurs, à part un cas bien précis (utilisation du placement new), il ne faut pas faire d'appel explicite au destructeur.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/04/2014, 10h43
  2. Réponses: 12
    Dernier message: 02/04/2011, 22h07
  3. différence entre as new et = new
    Par TaymouWan dans le forum VB.NET
    Réponses: 2
    Dernier message: 22/12/2009, 21h28
  4. Différence entre A.Maclasse et .MaClass
    Par Angelico dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 06/07/2005, 08h20
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo