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