Une méthode de classe peut être vue comme "une fonction" qui fait partie de la classe. Elle peut être appelée sans objet.
class A{
int at;
public:
void methode1(){ //methode d'objet
at = 1;
}
//static void methode2(){
// at = 1;
//} //erreur : interdit d'accéder à des attributs d'objets
static void methode3(){ //methode de classe
}
void void methode4(){ //methode d'objet
}
}
int main(){
A obj;
obj.methode1();
obj.methode3();
obj.methode4();
//A::methode1(); //erreur : c'est une méthode d'objet
A::methode3(); //ok méthode de classe
//A::methode4(); //erreur
}
Un attribut de classe est comme une variable global membre de la classe. Il doit être défini hors de la classe et déclaré dans la classe. Les méthodes de la classe peuvent y accéder.
struct A{
int a; //attribut d'objet
static int b; //attribut de classe (static)
void methode1(){
b = 1;
}
static void methode2(){
b = 2; // ok b est un attribut de classe donc accessible même dans une méthode de classe
}
}
int A::b = 0; //attention aux définitions multiples
int main(){
A ob1;
A ob2;
ob1.b = 1;
ob1.a = 2;
ob2.b = 3;
ob2.a = 4;
//ici ob1.b == 3
A::b = 1; //ok
//A::a = 1 //erreur
}
Membre d'une classe
1.
2.