İlk biçim Circle, copy()işlevin parametresi olan referansa bağlı nesnenin (durumunun) bu referansla değiştirilmeyeceği copy()anlamına gelir. Referans bir referanstır const, bu nedenle Circlekendileri olarak nitelendirilmemiş üye işlevlerini bu referans aracılığıyla çağırmak mümkün olmayacaktır const.
İkinci form, diğer taraftan, yasadışı: Sadece üye fonksiyonları olabilir constulaşım kolaylığı (ne bildiriyorlar küresel varken,friend fonksiyonu).
Bir constüye işlevi nitelendirdiğinde, niteleme örtük thisargümanı ifade eder . Başka bir deyişle, bu işlevin çağrıldığı nesnenin durumunu (örtük thisişaretçi tarafından gösterilen nesne) değiştirmesine izin verilmeyecektir - istisnamutable nesneler , ama bu başka bir hikaye.
Kodla söylemek için:
struct X
{
void foo() const
{
_x = 42;
_y = 42;
}
void bar(X& obj) const
{
obj._x = 42;
_x = 42;
}
void bar(X const& obj)
{
obj._x = 42;
obj._y = 42;
_x = 42;
}
int _x;
mutable int _y;
};