Quelqu'un peut m'expliquer pourquoi le "const" ne casse pas le polymorphisme?

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
17
18
19
20
21
22
23
24
25
26
27
class A
{
public:
	virtual void affiche(int i)
	{
		cout << "class A " << i << endl;
	};
 
};
 
class B: public A
{
public:
	virtual void affiche(const int i)
	{
		cout << "class B " << i << endl; 
 
	};
};
 
 
int main()
{
	A* a = new B();
	a->affiche(1);
	system( "pause" );
}
le résultat est "class B 1"