Salut!
Lorsque on écrit:
les 2 instances de la classe A, a1 et a2, ont accés à la même donnée static "i" qui est pourtant dans une méthode qui est propre à chaque instance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class A{ public: int n; A(int m):n(m){} void f(){ static int i=0; std::cout<<"Instance : "<<n<<" , i vaut : "<<i<<std::endl; i++; } }; int main(void) { A a1(1),a2(2); a1.f(); a2.f();
"i" est "static" par rapport à la classe et à le même comportement que dans le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class A{ public: static int i; int n; A(int m):n(m){} void f(){ std::cout<<"Instance : "<<n<<" , i vaut : "<<i<<std::endl; i++; } }; int A::i=0;
Donc 2 questions:
1)Pourquoi les concepteurs du langage ont ils implémenté ce comportement qui peut sembler paradoxal : un comportement "static" dans une méthode propre à chaque instance?
2)Comment faire alors pour avoir 2 instances d'une classe qui accèdent à une donnée "static" par rapport à une méthode, mais pas par rapport à la classe, chaque instance ayant sa propre donnée "static"?
Merci de vos réponses.
Partager