Classes + c++ aidez moi svp ?

Résolu
mixtape Messages postés 18 Statut Membre -  
 Nyze -
j commence a programmer avec le c++ (j metrise le C ) ...le probleme c que j narrive po a comprendre a quoi servent les classes au juste .... j ai po trouve d exemple sur le net

6 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Une classe c'est l'évolution des structures du c. Tu définis des accessiblités (private protected public) pour certains attributs de classes (les anciens champs de tes structs) et pour les méthodes (les fonctions rattachées à une classe).

    Les méthodes travaillent sur les paramètres passés ainsi que sur this, qui pointe sur l'instance de l'objet sur lequel tu appelles la méthode.

    Ainsi :

    class plop{
    private://uniquement accessible dans la classe plop
        protected data;
    protected://uniquement accessible dans la classe plop et les classes dérivées de plop
    public://accessible partout
    
       plop():data(5){}
    
       int f(int i,int j){
           return this->data+i+j;//equivalent à return data+i+j
       }
    };
    
    int main(){
      plop p=plop(); //objet plop créé
      int i=0;
      int j=0;
      std::cout<<p.data<<std::endl; //faux car data est private
      p.f(i,j)//appel à la methode f : f peut travailler sur this=&p et sur les entiers i et j
      return 0;
    }

    Cf les liens donnés par sebsauvage pour les compléments d'infos

    Bonne chance
    0
  2. mixtape Messages postés 18 Statut Membre 1
     
    merci bien les gas , une question encore ; le this j arrive po a comprendre quand est ce que j doit l utiliser et quand est ce que je doit po ??? merci
    0
  3. Zep3k!GnO Messages postés 2049 Statut Membre 200
     
    le this tu l'utilise selon le contexte dans lequel tu es.
    Si tu veux appeller un attrbibut et que tu es dans la classe,tu vas mettre

    this->nomAttribut .

    Mais si tu n'est pas dans ta classe il faut une instance de l'objet, il faut que tu ai un objet de ta classe .
    genre que t'ai fait un MonObjet=new MaClass(); // la synthaxe est pas top je pense mias ca fait qques temps que j'ia pas refait de C++..
    puis pour appeller l'attribut :

    MonObjet->nomAttribut .

    Voilà, j'espère que tu saisie mieu la différence et cette notion de contexte...

    Zep3k!GnO
    -->kurtis jackson:"Dans la vie tu as besoin de 3 choses : le fitness, l'aérobic et moi."
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    this est le pointeur sur l'instance sur laquelle tu appelles la méthode. Il peut être sous-entendu dans les corps de méthodes s'il n'y a pas d'ambiguité (avec une variable locale à la fonction ou un paramètre).
    class plop{
       private:
         int i;
    
       public:
         plop():i(0){} //constructeur
    
         void f(){
            ++(this->i);
            ++i;//equivalent
         } //tu peux modifier this->i
    
         int g() const{ 
           return i;//equivalent à retourne this->i
         } //tu peux modifier this->i car le const t'en empeche
    };
    
    int main(){
      plop p;
      plop *q=new plop();
      p.f(); //dans cet appel this==&p
      q->g(); //dans cet appel this==q
      delete q;
      return 0;
    }

    Bonne chance
    0
  6. Nyze
     
    Bonjour à vous.

    Petite précision que j'apporte au cas où tu tomberais sur ce cas :
    this-> peut être remplacé par (*this).
    Exemple : this->maMethode(); équivaut à (*this).maMethode();
    0