La référence à une constante provoque une erreur. Seule une déclaration de paramètre du genre const X & permettra l'appel (par référence) avec un objet de type const X;
const int ci=0; // int &r=ci; interdit const int &q=ci; // oui void f(int & q){} void g(const int & q){} void main(){ // f(ci); interdit g(ci); // ok }Ce qui précède s'applique aussi aux classes, une fonction membre ne pourra être appliquée à une constante de la classe qui si elle est déclarée const :
class A{ public: void f(){ /*...*/} void f_cons()const{ /* ... */ ;} }; A a; void main(){ // a_cons.f(); interdit a_cons.f_cons(); // oui }