2.1.5 Les méthodes obligatoires

On ne peut pas toujours faire ce que l'on veut, mais vous allez voir que c'est utile.

Nous somme en train de définir un type nouveau, qui n'existe pas et qui est complexe (qui contient d'autres types). Votre ordinateur ne sait pas a-priori comment construire un tel type, C'est pour cela qu'il faut redéfinir une fonction particulière : le constructeur. Cette fonction a exactement le même nom que la classe (même les majuscules et les minuscules).

Le constructeur de Shadok sera donc définit comme ceci :

1
Shadok();

Mais il n'y a pas de type retourné, comme void ?

Et bien non, c'est une exception (comme les deux méthodes que nous allons voir).

Et oui, vous me voyez sûrement venir, si l'ordinateur ne sait pas construire un Shadok, il n'y a aucune raison pour qu'il puisse le détruire, c'est pour cela qu'il faut aussi définir une autre fonction particulière : le destructeur. Cette fonction a le même nom que la classe précédée d'un tilde (~).

Le destructeur de Shadok sera donc définit comme ceci :

1
~Shadok();

Et il n'y a encore pas de type retourné.

Une dernière chose : il faut préciser la méthode d'accès aux fonctions que l'on définit, il y en a trois :

  • public : n'importe quelle classe ou n'importe quelle fonction peut appeler la méthode (ou l'attribut)
  • private : il n'y a que la classe qui peut appeler la méthode (ou l'attribut)
  • protected : il n'y a que la classe et ses enfants qui peuvent appeler la méthode (ou l'attribut), on verra cela avec l'héritage.

Voilà ce que ça donne dans le fichier shadok.h :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef __SHADOK_H__
#define __SHADOK_H__

#include <iostream>
#include <string>

namespace ShadokOption{
	enum Type{
		SHADOKDUHAUT,
		SHADOKDUBAS,
	};
};

class Shadok{
	public:
		Shadok();
		~Shadok();
	
};

#endif

Et on pourra passer des paramètres à ces fonctions après ?

On pourra passer des paramètres au constructeur mais pas au destructeur (il doit toujours être comme ça).