Donnée "static" dans une fonction non "static" accessible à une seule instance
Salut!:D
Lorsque on écrit:
Code:
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(); |
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.
"i" est "static" par rapport à la classe et à le même comportement que dans le code:
Code:
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.:D