Constructeurs d'objets

Définition

  • Les constructeurs permettent de garantir une initialisation correcte des instances d'une classe.

  • Un constructeur est une fonction membre qui porte le nom de la classe à laquelle elle appartient

  • Le constructeur ne renvoie pas de résultat et est appelé automatiquement à chaque création d'objet.

  • Le constructeur peut accepter des arguments.

Types de constructeurs

Il existe 2 types de constructeurs :

  • Par défaut

  • Par paramètres

Constructeur par défaut

Définition

Le constructeur par défaut est un constructeur sans paramètre

Exemple

Dans l'exemple suivant, la fonction Led() est un constructeur sans paramètre :

1
#define PORTLED 3
2
class Led{
3
  private:
4
  int pinLed;
5
   public:
6
    Led ();
7
    void swon();
8
    void swoff();
9
};
10
Led::Led(){
11
    pinLed = PORTLED;
12
    pinMode(pinLed, OUTPUT);
13
}

Dans le programme principal, on pourra donc trouver une instruction comme celle-ci :

1
...
2
Led led; //Objet LED
3
...

Constructeur par paramètres

Définition

Ce constructeur permet d'initialiser l'objet selon des valeurs précises passées en argument de la fonction.

Exemple

Dans l'exemple suivant, le constructeur avec paramètre permet d'initialiser le numéro de port :

1
class Led{
2
  private:
3
  int pinLed;
4
   public:
5
    Led (int);
6
    void swon();
7
    void swoff();
8
};
9
Led::Led(int port){
10
    pinLed = port;
11
    pinMode(pinLed, OUTPUT);
12
}

Dans le programme principal, on pourra donc trouver une instruction comme celle-ci :

1
...
2
Led led(3);
3
...
RemarqueNombre de constructeurs

Il est possible d'avoir plusieurs constructeurs, à condition que le nombre de paramètres soit différent :

1
#define PORTLED 3
2
class Led{
3
  private:
4
  int pinLed;
5
   public:
6
    Led (int);//Constructeur avec 1 paramètre
7
    Led(); //Constructeur sans paramètre
8
    void swon();
9
    void swoff();
10
};
11
Led::Led(int port){
12
    pinLed = port;
13
    pinMode(pinLed, OUTPUT);
14
}
15
Led::Led(){
16
    pinLed = PORTLED;
17
    pinMode(pinLed, OUTPUT);
18
}