C++, déclaration des méthodes de classe
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

C++, déclaration des méthodes de classe



  1. #1
    Bounoume

    C++, déclaration des méthodes de classe


    ------

    je ne voudrais pas provoquer cette fois autant de vagues que par ma précédente question :
    Vu que nous en sommes au message 43 (sans compte celui-ci), que Bounoume n’est pas revenu depuis le message 10 et que cette discussion a dérivé puis s’est transformée en une lutte d’égos elle est désormais close.
    d'autant que la réponse attendue est arrivée très vite.....

    cette fois, c'est encore mon ignorance sur une syntaxe
    (trouvée dans le tutoriel que je consultais pour une sombre histoire qui ressemble à une corruption mémoire par des instructions... euh... risquées.... ou sournoises...)


    voici la page source complète:
    https://www.learncpp.com/cpp-tutoria...namic-casting/
    et la déclaration d'objet avec le ":" dont je ne connais pas la signification, faut que je l'avoue:
    Base(int value) : m_value(value)

    la déclaration complète:

    Code:
     
    class Base
    {
    protected:
    	int m_value;
     
    public:
    	Base(int value)
    		: m_value(value)
    	{
    	}
    Il me semble que ça, c'est le début de la déclaration d'un constructeur de l'objet de classe Base:
    public:
    Base(int value)
    et ensuite le code à exécuter pour initialiser les propriétés de l'objet, par exemple: { m_value=value;}

    mais à la place il y a ce :m_value(value)
    Est-ce équivalent?
    merci d'avance...

    -----
    Dernière modification par JPL ; 14/07/2019 à 18h34. Motif: Remplacement de la balise Quote par Code
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

  2. #2
    Jack
    Modérateur

    Re : C++, déclaration des méthodes de classe

    Il s'agit de ce qu'on appelle une liste d'initialisation.
    Pour des données simple, cela n'a pas d'intérêt particulier plus que de faire de simples affectations dans le constructeur (m_value = value, mais plus efficace lors de l'initialisation de structures plus complexes tels que des objets.

    Ca permet également d'initialiser des membres qui sont déclarés comme des références, ce qui ne pourrait pas se faire par une simple affectation dans le constructeur.

  3. #3
    Bounoume

    Re : C++, déclaration des méthodes de classe

    Ok pour la relative équivalence (en + efficace)
    Mais ça m'oblige à changer mes vieilles habitudes... alors.....

    Citation Envoyé par Jack Voir le message
    Il s'agit de ce qu'on appelle une liste d'initialisation.
    Ca permet également d'initialiser des membres qui sont déclarés comme des références, ce qui ne pourrait pas se faire par une simple affectation dans le constructeur.
    par contre ici ça me surprend:
    ce bout de code semblerait concerné (des membres sont des pointeurs==références )
    Voici le bazar
    dans prg_nodes.h il y a la déclaration des membres private: nodes *caller; nodes * creator; nodes * signifiant; etc etc

    dans prg_nodes.cpp:
    nodes::nodes(nodes* caller, nodes *creator, int trip_initial, nodes * signifiant, int trip, int nsteps, long int ticks)
    {Typeitem=NODE; // seulement en initialisation....
    Caller=caller;
    Creator=creator;
    Trip_initial=trip_initial;
    Unid=the_kernel.getNew_unid();
    Signifiant=signifiant;
    etc etc.....
    }
    QT4 et gcc acceptent... j'ai dû mal comprendre...
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

  4. #4
    Jack
    Modérateur

    Re : C++, déclaration des méthodes de classe

    Les pointeurs ne posent pas de problèmes, mais les références oui.

  5. A voir en vidéo sur Futura
  6. #5
    Bounoume

    Re : C++, déclaration des méthodes de classe

    ok. merci.
    problème résolu.
    rien ne sert de penser, il faut réfléchir avant.... (Pierre Dac...)

Discussions similaires

  1. Classe à gauche, classe à droite
    Par invite8f6d0dd4 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 29/01/2017, 09h11
  2. Le DPE classe F ou G de base pour passer en classe A en rénovation
    Par invite156f0473 dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 8
    Dernier message: 11/12/2015, 17h24
  3. Classe fille contenant une liste d'objet de classe mere?
    Par invite060768e9 dans le forum Programmation et langages, Algorithmique
    Réponses: 18
    Dernier message: 16/07/2015, 23h08
  4. Déclaration en C
    Par Dlzlogic dans le forum Programmation et langages, Algorithmique
    Réponses: 10
    Dernier message: 27/02/2013, 15h43
  5. Classe gauche vs classe de conjugaison
    Par invite191682dc dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 26/12/2011, 21h57