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 :

[débutant] tester un pointeur sur un objet


Sujet :

C++

  1. #21
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 91
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par NewbiZ
    De vieux restes de C surement
    > hum je sui pas plus famillié au C je compren pa prkoi tu a fait la remark lol.
    En tout cas c bien dommag, jaurai bien aimé garder la mm écriture entre le C# et le C++. Pour info en C# on utilise null ds le but d'initialiser les références.

  2. #22
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Et en C++/CLI, on utilise nullptr.

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    NULL apartient à C... même en C++ NULL est du domaine C puisqu'il est déclarer dans le préprocesseur

    C'est pourquoi plusieurs utilisent 0, c'est autant auto-documenté que NULL.

    est autant, sinon plus, lisible que
    ainsi que plusieurs utilisent
    pour valider que le pointeur est initialisé
    sachant que 0 en C++ vaut false et toutes les autres valeurs valent true.

    NULL n'est donc plus viable en C++, c'est du C

  4. #24
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    0 n'est pas "autant auto-documenté" que NULL, car quand on voit 0, on pense "entier".
    Quand on voit NULL, on pense "pointeur". Et ce, qu'on vienne de C, C#, ou même Java.

  5. #25
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 627
    Points : 30 692
    Points
    30 692
    Par défaut
    On ne nie absolument pas que NULL soit un héritage du C...

    D'ailleurs, quand tu y regarde d'un peu plus pres, il y a de nombreuses choses dans l'espace de nommage std qui ne sont que des héritages du C... (bien souvent, au mieux, avec un #undef hors de l'espace de nommage, et un #define exactement identique celui du C à l'intérieur )

    Et pour cause: le C++ revendique de descendre du C... tout en revendiquant une différence par rapport à lui

    Cependant, je rejoint fortement l'avis (une fois n'est pas coutume) de médinoc: NULL est à mon sens bien plus autocommenté que 0...

    N'oublions jamais que l'on peut décider de remettre un pointeur à 0/NULL à n'importe quel moment (idéalement, apres avoir quand meme pensé à libérer la mémoire vers laquelle il pointait ) et que, en dehors de tout autre système auto-commenté (tous les noms variables "pointeurs" ne commencent pas forcément par un ptr_ ni meme par un p*), il devient rapidement difficile, parmis, parfois, plusieurs centaines de lignes de code, de se rappeler que telle ou telle variables est un pointeur et non un entier en voyant simplement
    ...Ce qui pourrait très bien arriver si la libération de la mémoire est déléguée à une fonction qui aurait été appelée quelques lignes plus tot...

    C'est la raison pour laquelle, je préférerai toujours également tester un pointeur sous la forme de
    plustot que sous celle de
    bien qu'en définitive, les deux formes soient effectivement équivalentes...

    Je sais que le C et le C++ fournissent énormément de "raccourcis" qui peuvent sembler très intéressant à première vue...

    Mais il ne faut jamais oublier que ces raccourcis ont pour la plupart l'énorme inconvéniant de forcer à une réfléxion plus importante lorsque l'on (re)découvre un code inconnu/oublié...

    Ces raccourcis datent, pour la plupart (tous serait d'ailleurs plus juste), d'un temps où tout était à faire, y compris dans le domaine des éditeurs de texte...

    Ils permettaient de gagner quelques (dizièmes) de seconde à chaque fois qu'ils étaient utilisés, et faisaient, au final, gagner un temps non négligeable sur plusieurs centaines de lignes/instructions...ou sur l'ensemble d'un projet...

    L'inconvéniant était que le code fourni perdait en compréhensibilité aux yeux d'une personne qui n'aurait pas participé directement au codage meme ou qui l'aurait laissé de coté pendant un temps plus ou moins long...

    Mais, maintenant, avec l'évolution de tous les éditeurs de texte (y compris vim et emacs), et, principalement celles qui ont trait à l'auto-complétion et au copier/coller, on ne perd absolument pas de temps à laisser les raccourcis de coté, mais, par contre, qu'est-ce qu'on gagne, en le faisant, au niveau de la compréhension du code ...

    [EDIT]maintenant, je n'ai fait qu'émettre mon avis strictement personnel... mais je le partage

  6. #26
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Citation Envoyé par koala01
    <snip, je suis d'accord>
    C'est la raison pour laquelle, je préférerai toujours également tester un pointeur sous la forme de
    plustot que sous celle de
    bien qu'en définitive, les deux formes soient effectivement équivalentes...
    Je suis 100% d'accord avec toi sur le fond (d'ailleurs, j'ai tendance à corriger quand je tombe sur un de mes anciens programmes), mais sur la forme, les deux formules ici décrites ne sont PAS équivalentes, mais opposées :p
    ---> Le premier test est vrai si le pointeur n'est pas null, le second test est vrai s'il l'est...
    Enfin, sans doute une faute d'inattention, qui ne change rien à l'argument.
    Argument auquel je réponds un gros:
    +1

    Et +1 aussi pour la suite du post.

  7. #27
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par koala01
    D'ailleurs, quand tu y regarde d'un peu plus pres, il y a de nombreuses choses dans l'espace de nommage std qui ne sont que des héritages du C... (bien souvent, au mieux, avec un #undef hors de l'espace de nommage, et un #define exactement identique celui du C à l'intérieur )
    Il ne faut pas exagere: les namespace n'ont aucun rapport sur la portee et la visibilite des macros.

    Sur le fond je suis d'accord, mais il faut savoir que l'utilisation de 0 plutot que de NULL, l'elision de la comparaison a 0 de pointeurs ou d'entier est suffisemment repandue pour qu'on doive considere les deux comme idiomatiques.

Discussions similaires

  1. [débutant] Tester l'existence d'un objet
    Par guidav dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 18/01/2007, 18h53
  2. utilisations de pointeurs sur des objets
    Par niarkyzator dans le forum Delphi
    Réponses: 21
    Dernier message: 13/12/2006, 09h42
  3. [Ada] Récupérer un pointeur sur un objet existant
    Par vincnet500 dans le forum Ada
    Réponses: 1
    Dernier message: 14/11/2004, 14h26
  4. vector de pointeurs sur des objet
    Par jean-bobby dans le forum SL & STL
    Réponses: 26
    Dernier message: 06/08/2004, 14h54
  5. [Débutant] Tester une connection sur bdd
    Par lando dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/09/2003, 14h37

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